babel-loader 错误 - TypeError: val is not a function

Posted

技术标签:

【中文标题】babel-loader 错误 - TypeError: val is not a function【英文标题】:babel-loader error - TypeError: val is not a function 【发布时间】:2019-07-20 13:08:58 【问题描述】:

我正在尝试使用 webpack 和 babel,但我遇到的错误似乎在线上任何地方都没有。在我测试时它现在是非常简单的 js,但它仍然在不应该出现的地方给我错误。

var test = () => 
  console.log("Test")

test()

我收到了错误:

ERROR in ./dist/main.js
Module build failed (from ./node_modules/babel-loader/lib/index.js):
TypeError: val is not a function

ERROR in ./dist/main.js
Module build failed (from ./node_modules/babel-loader/lib/index.js):
TypeError: val is not a function
    at cache.using (C:\Users\Bacon\Desktop\ReactProj\jsx\node_modules\@babel\core\lib\config\caching.js:179:47)
    at CacheConfigurator.using (C:\Users\Bacon\Desktop\ReactProj\jsx\node_modules\@babel\core\lib\config\caching.js:132:17)
    at Object.cacheFn [as cache] (C:\Users\Bacon\Desktop\ReactProj\jsx\node_modules\@babel\core\lib\config\caching.js:179:18)
    at module.exports (C:\Users\Bacon\Desktop\ReactProj\jsx\babel.config.js:2:9)
    at readConfigJS (C:\Users\Bacon\Desktop\ReactProj\jsx\node_modules\@babel\core\lib\config\files\configuration.js:212:15)
    at cachedFunction (C:\Users\Bacon\Desktop\ReactProj\jsx\node_modules\@babel\core\lib\config\caching.js:33:19)
    at readConfig (C:\Users\Bacon\Desktop\ReactProj\jsx\node_modules\@babel\core\lib\config\files\configuration.js:173:56)    at findRootConfig (C:\Users\Bacon\Desktop\ReactProj\jsx\node_modules\@babel\core\lib\config\files\configuration.js:148:16)
    at buildRootChain (C:\Users\Bacon\Desktop\ReactProj\jsx\node_modules\@babel\core\lib\config\config-chain.js:78:44)
    at loadPrivatePartialConfig (C:\Users\Bacon\Desktop\ReactProj\jsx\node_modules\@babel\core\lib\config\partial.js:85:55)
    at Object.loadPartialConfig (C:\Users\Bacon\Desktop\ReactProj\jsx\node_modules\@babel\core\lib\config\partial.js:110:18)
    at Object.<anonymous> (C:\Users\Bacon\Desktop\ReactProj\jsx\node_modules\babel-loader\lib\index.js:140:26)
    at Generator.next (<anonymous>)
    at asyncGeneratorStep (C:\Users\Bacon\Desktop\ReactProj\jsx\node_modules\babel-loader\lib\index.js:3:103)
    at _next (C:\Users\Bacon\Desktop\ReactProj\jsx\node_modules\babel-loader\lib\index.js:5:194)
    at C:\Users\Bacon\Desktop\ReactProj\jsx\node_modules\babel-loader\lib\index.js:5:364
    at new Promise (<anonymous>)
    at Object.<anonymous> (C:\Users\Bacon\Desktop\ReactProj\jsx\node_modules\babel-loader\lib\index.js:5:97)
    at Object._loader (C:\Users\Bacon\Desktop\ReactProj\jsx\node_modules\babel-loader\lib\index.js:220:18)
    at Object.loader (C:\Users\Bacon\Desktop\ReactProj\jsx\node_modules\babel-loader\lib\index.js:56:18)
    at Object.<anonymous> (C:\Users\Bacon\Desktop\ReactProj\jsx\node_modules\babel-loader\lib\index.js:51:12)

我的代码中的任何地方都没有 val,所以我看不出哪里出错了。这是我的 project.json 中的 devDependencies

"devDependencies": 
    "@babel/core": "^7.3.4",
    "@babel/plugin-proposal-class-properties": "^7.3.4",
    "@babel/preset-env": "^7.3.4",
    "@babel/preset-es2015": "^7.0.0-beta.53",
    "@babel/preset-react": "^7.0.0",
    "babel-loader": "^8.0.5",
    "standard": "^12.0.1",
    "webpack": "^4.29.5",
    "webpack-cli": "^3.2.3"
  

我已经尝试了几个小时来解决这个问题,但没有成功,我快要疯了,无法在谷歌上找到它。

【问题讨论】:

由于您没有包含错误的堆栈跟踪,因此目前无法回答。 刚刚添加了堆栈跟踪的其余部分。对我来说似乎不是特别有用。 堆栈跟踪提到 jsx\babel.config.js 正在调用一个然后抛出的函数,因此很可能您的配置我们以不正确的方式调用了一个函数。如果你包含babel.config.js 内容,我可以告诉你哪里出了问题。 我刚刚查看了一下,发现括号中的app.cache() 没有任何值。我将它设置为true,它现在可以工作了。 【参考方案1】:

如果您使用 babel.config.js 而不是 .babelrc 并且您有这个:

module.exports = api => 
  api.cache();

  return 
    ...
  

cache 需要一个布尔参数。所以要么将truefalse 传递给cache(),就像这样:api.cache(true);

【讨论】:

【参考方案2】:

babel.config.js中,我将app.cache()的参数设置为true,现在可以了。

【讨论】:

以上是关于babel-loader 错误 - TypeError: val is not a function的主要内容,如果未能解决你的问题,请参考以下文章

Heroku 在部署 MEVN 应用程序时构建错误,为啥 heroku 显示 babel-loader 和 vue-loader 错误?

babel-loader 错误 - TypeError: val is not a function

Gatsby - 错误:找不到模块 '..\node_modules\gatsby\dist\utils\babel-loader.js'

多应用程序中的错误:将 babel 升级到 v7 后无法解析模块“babel-loader”

为啥我会收到此错误:模块构建失败(来自 ./node_modules/babel-loader/lib/index.js):语法错误 Unexpected token, expected "

为啥安装 babel-loader 后 yarn 会报错?