未捕获的类型错误:无法读取未定义的属性(读取“拆分”)

新手上路,请多包涵

我正在使用 webpack,但在浏览器中出现此错误:

 Uncaught TypeError: Cannot read properties of undefined (reading 'split')
    at eval (validator.js:15)
    at Object../node_modules/axios/lib/helpers/validator.js (main.bundle.js:1225)
    at __webpack_require__ (main.bundle.js:1673)
    at eval (Axios.js:8)
    at Object../node_modules/axios/lib/core/Axios.js (main.bundle.js:1005)
    at __webpack_require__ (main.bundle.js:1673)
    at eval (axios.js:5)
    at Object../node_modules/axios/lib/axios.js (main.bundle.js:961)
    at __webpack_require__ (main.bundle.js:1673)
    at eval (index.js:1)

编译时没有错误或警告。

validator.js 的第 15 行如下所示: var currentVerArr = pkg.version.split('.');

文件顶部有这一行: var pkg = __webpack_require__(/*! ./../../package.json */ "./package.json");

所以看起来 __webpack_require 不起作用?

我怎样才能解决这个问题?

原文由 Fidelix 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 631
1 个回答

我今天遇到了同样的问题。这是因为我将 json 文件的默认加载程序更改为 file-loader 如下所示:

 {
  type: 'javascript/auto',
  test: /\.(geo)?json$/,
  use: 'file-loader'
},

如果您在 axios v0.21.4 中查看 axios/lib/helpers/validators.js 的代码,您会看到它导入了 package.json 就像这样: var pkg = require('./../../package.json'); .

上面的配置导致文件作为指向其 URL 的字符串被加载,但代码假定一个 JS 对象,并且当它尝试访问其 version 属性时,它失败了。

我通过从该规则中排除 axios/package.json 来修复错误:

 {
  type: 'javascript/auto',
  test: /\.(geo)?json$/,
  exclude: [path.resolve(__dirname, 'node_modules/axios/package.json')],
  use: 'file-loader'
},

您的问题可能是由于您的 webpack 配置中存在类似问题。检查您的规则和配置的其他部分,以查看您使用的加载程序以及您如何解析文件和对象。

原文由 kaveh 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题