未捕获的类型错误:无法读取未定义的属性(读取“split”)
我正在使用 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 不起作用?
我该如何修复此问题?
我也遇到了同样的问题。 我的axios版本是0.21.3 试了很多方法都没用。 最后只能换回0.21.1了(这个版本没有validator.js,所以我觉得是bug)
npm i --save [email protected]
显然,axios 依赖于 package.json 中定义的“version”属性。 但我不知道为什么……
但解决方案是向 package.json 添加“version”属性。任何版本都可以。
我今天遇到了同样的问题。这是因为我将 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 配置中的类似内容造成的。检查您的规则和配置的其他部分,查看您正在使用的加载器以及如何解析文件和对象。