You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Webpack无法识别以@开头的npm模块,加载器配置问题求助

Webpack无法识别以@开头的npm模块,加载器配置问题求助

嘿,我来帮你捋捋这个问题~

首先得澄清:你遇到的错误不是@开头的npm模块本身的识别问题,而是@connect/nav这个第三方包里的代码写法有问题!你看错误提示里的代码:

module.exports = @material-ui/core/styles;

这根本不是合法的JavaScript语法啊!正常导出应该写成module.exports = require('@material-ui/core/styles');才对,这种直接写@xxx的写法Webpack肯定解析不了。

现在你的Webpack配置里,babel-loader是排除了所有node_modules目录的,所以这个有问题的包代码根本没经过转译处理。要解决这个问题,你需要让Webpack专门处理@connect/nav这个包,修改你的Webpack配置里的JS/JSX规则:

把原来的规则:

{
  test: /\.(js|jsx)$/,
  exclude: /node_modules/,
  use: {
    loader: 'babel-loader',
  },
},

改成:

{
  test: /\.(js|jsx)$/,
  // 排除node_modules目录,但不排除@connect/nav这个包
  exclude: /node_modules(?!\/@connect\/nav)/,
  use: {
    loader: 'babel-loader',
  },
},

这样配置后,babel-loader就会处理@connect/nav包里的代码,帮你转译掉这种不合法的语法(前提是你的Babel配置正确,比如.babelrc里已经配置了@babel/preset-env和@babel/preset-react)。

另外,如果@connect/nav是你自己维护的内部包,那最根本的解决办法是直接修复包里的代码,把错误的导出写法改成标准的require或者ES模块导入,这样就不用额外调整Webpack配置啦。

备注:内容来源于stack exchange,提问作者Lauren Cain

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.23 15:27:28