开发者问题收集

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

2021-09-05
19001

我正在使用 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 不起作用?

我该如何修复此问题?

3个回答

我也遇到了同样的问题。 我的axios版本是0.21.3 试了很多方法都没用。 最后只能换回0.21.1了(这个版本没有validator.js,所以我觉得是bug)

npm i --save [email protected]

rapin
2021-09-06

显然,axios 依赖于 package.json 中定义的“version”属性。 但我不知道为什么……

但解决方案是向 package.json 添加“version”属性。任何版本都可以。

Fidelix
2021-09-05

我今天遇到了同样的问题。这是因为我将 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
2021-09-29