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

kgsdhlau  于 2022-11-24  发布在  Webpack
关注(0)|答案(3)|浏览(322)

我正在使用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不起作用?
我该如何解决这个问题?

hk8txs48

hk8txs481#

我也遇到了同样的问题。我的axios版本是0.21.3。我尝试了很多方法,但都不起作用。最后,回到0.21.1(这个版本没有validator.js,所以我认为这是一个bug)
npm i --保存axios@0.21.1

zzzyeukh

zzzyeukh2#

显然,axios依赖于package.json中定义的"version"属性。
但解决方案是在package.json中添加一个"version"属性。

i2byvkas

i2byvkas3#

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

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

如果你看一下axios v0.21.4中axios/lib/helpers/validators.js的代码,你会发现它像这样导入package.jsonvar 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配置中的类似内容造成的。请检查您的规则和配置的其他部分,以查看您使用的加载程序以及您如何解析文件和对象。

相关问题