What happens?
https://github.com/umijs/umi/blob/master/packages/plugins/src/request.ts#L157
发生空指针错误
Mini Showcase Repository(REQUIRED)
以下项目用antd pro v5搭建
https://github.com/fengertao/SudokuMasterV3/tree/master/SudokuMasterUI
如果用yarn start:dev启动,则可以正常执行,显示登录页面,输入账户密码后,点击登录进入系统(后台的代码在 https://github.com/fengertao/SudokuMasterV3/tree/master/SudokuMasterServ )
如果做生产部署,执行 yarn:deploy (rm -rf dist && max build && rm -rf ../SudokuMasterServ/src/main/resources/static && cp -r dist ../SudokuMasterServ/src/main/resources/static),然后编译启动后台,可以显示登陆页面,但输入账户密码后,点击登录报错:
TypeError: Cannot read properties of null (reading 'applyPlugins')
at dn (umi.a854bfc6.js:1099:5368)
at Cn (umi.a854bfc6.js:1099:5498)
at w (umi.a854bfc6.js:1099:46552)
at p__User__Login__index.dfb9a4e1.async.js:1:1975
at x (umi.a854bfc6.js:1200:3106)
at Generator._invoke (umi.a854bfc6.js:1200:2843)
at Generator.next (umi.a854bfc6.js:1200:3468)
at h (umi.a854bfc6.js:1197:90287)
at u (umi.a854bfc6.js:1197:90484)
加了一下log
发现是在src/.umi/plugin-request/request.ts第135行
(对应 https://github.com/umijs/umi/blob/master/packages/plugins/src/request.ts#L157)
config = getPluginManager().applyPlugins({
这里的getPluginManager()返回null
可以合理猜测,yarn start:dev启动的项目,plugin.ts中的pluginManager被初始化了。而yarn deploy打包的项目,plugin.ts中的pluginManager没有被初始化导致错误。
How To Reproduce
Context
- Umi Version: Umi4.0.12, AntD ProV5
- Node Version: nodejs v18.7.0
- Platform: Win11
4条答案
按热度按时间jjjwad0x1#
这个项目依赖有些问题,build 之后
max preview
没遇到你说的问题,可以正常启动,点击 login 也没有 js 报错。https://github.com/MoeYc/SudokuMasterV3
xbp102n02#
@fz6m 谢谢查看这个问题。
现状是:yarn build完成后
也就是说这个问题在yarn start和max preview不会发生,但在yarn:deploy会发生。
PS. 可以帮助说明项目依赖的问题吗,我修改一下。
vu8f3i0k3#
.js
文件是否正确的加载完成,如有问题,通过配置publicPath
解决 。i. 所有请求都被重写到
index.html
,这在 nginx 中是 try files 。ii. 保证接口通行,接口的请求地址正确(在生产部署时,没有代理行为,所有的请求必须打向正确的地址),同时不会命中重写规则(一般情况下通过 prefix 或者不同域名保证)。
vof42yt14#
重写和接口通行应该都是对的。这个前台以前是另一个UI脚手架react-admin写的 ( https://github.com/yezihaohao/react-admin),已经稳定运行好几年了。说明请求重写等是正常的。%EF%BC%8C%E5%B7%B2%E7%BB%8F%E7%A8%B3%E5%AE%9A%E8%BF%90%E8%A1%8C%E5%A5%BD%E5%87%A0%E5%B9%B4%E4%BA%86%E3%80%82%E8%AF%B4%E6%98%8E%E8%AF%B7%E6%B1%82%E9%87%8D%E5%86%99%E7%AD%89%E6%98%AF%E6%AD%A3%E5%B8%B8%E7%9A%84%E3%80%82)
最近切换到antd pro v5上,可以看见登录页面,可以在debug console等看到请求发出是对的。但getPluginManager()返回了一个空的pluginManager