【问题标题】:JavaScript babel "TypeError: Cannot read property 'bindings' of null" when trying to transpile尝试转译时 JavaScript babel“TypeError:无法读取 null 的属性‘绑定’”
【发布时间】:2019-05-15 21:50:46
【问题描述】:

使用 PhpStorm,据我了解,当我修改 JavaScript 源文件时,我有这个文件观察器 (babel),它会做一些魔术并将这些文件稍微转换到另一个文件夹中(dist) 以便 gulp 可以“编译”所有内容并运行应用程序。但是每当我修改文件而不是魔法发生时,我都会得到一个

“TypeError: 无法读取 null 的属性‘绑定’”**

我不明白为什么。

我尝试了什么:

  • 我的老师告诉我修改配置,使其成为 babel.cmd 而不是 babel,因为我在 Windows 上,但这不起作用。

  • 此时我几乎卸载并重新安装了所有内容,并且所有内容都达到了我认为的最新版本。

  • 我尝试将我的.babelrc 文件中的预设设置为"@babel/preset-env",但这也不起作用。

我的 .babelrc 文件

{
  "presets": ["@babel/preset-env"]
}

我的 package.json 文件

{
  "name": "battleship",
  "version": "0.0.1",
  "devDependencies": {
    "@babel/cli": "^7.4.4",
    "@babel/core": "^7.4.4",
    "@babel/preset-env": "^7.4.4",
    "babel-jest": "^24.8.0",
    "babel-loader": "^7.1.5",
    "babel-preset-env": "1.6.1",
    "gulp": "^4.0.2",
    "jest": "^24.8.0",
    "tar": "^4.4.8"
  },
  "scripts": {
    "test": "jest"
  },
  "dependencies": {
    "babel-core": "^6.26.3",
    "babel-polyfill": "6.26.0",
    "browserify": "16.1.1",
    "core-js": "^3.0.1",
    "fstream": "^1.0.12",
    "glob": "7.1.2",
    "md5": "2.2.1",
    "npm": "^6.9.0",
    "vinyl-source-stream": "2.0.0",
    "webpack": "^2.7.0"
  },
  "jest": {
    "browser": true,
    "modulePathIgnorePatterns": [
      "<rootDir>/js/__mocks__"
    ],
    "setupFiles": [
      "./setup-jest.js"
    ],
    "transform": {
      "^.+\\.jsx?$": "babel-jest"
    }
  }
}

错误详情

我真的不明白这个“绑定”属性指的是什么以及我应该改变它,我没有在任何称为绑定的属性中编码..

cmd.exe /D /C call C:\Users\lande\Documents\js_Battleship\node_modules\.bin\babel.cmd js\controllers\StatController.js --out-dir dist --source-maps --presets env
TypeError: Cannot read property 'bindings' of null
    at Scope.moveBindingTo (C:\Users\lande\Documents\js_Battleship\node_modules\@babel\traverse\lib\scope\index.js:864:13)
    at convertBlockScopedToVar (C:\Users\lande\Documents\js_Battleship\node_modules\babel-plugin-transform-es2015-block-scoping\lib\index.js:139:13)
    at PluginPass.VariableDeclaration (C:\Users\lande\Documents\js_Battleship\node_modules\babel-plugin-transform-es2015-block-scoping\lib\index.js:26:9)
    at newFn (C:\Users\lande\Documents\js_Battleship\node_modules\@babel\traverse\lib\visitors.js:193:21)
    at NodePath._call (C:\Users\lande\Documents\js_Battleship\node_modules\@babel\traverse\lib\path\context.js:53:20)
    at NodePath.call (C:\Users\lande\Documents\js_Battleship\node_modules\@babel\traverse\lib\path\context.js:40:17)
    at NodePath.visit (C:\Users\lande\Documents\js_Battleship\node_modules\@babel\traverse\lib\path\context.js:88:12)
    at TraversalContext.visitQueue (C:\Users\lande\Documents\js_Battleship\node_modules\@babel\traverse\lib\context.js:118:16)
    at TraversalContext.visitQueue (C:\Users\lande\Documents\js_Battleship\node_modules\@babel\traverse\lib\context.js:124:21)
    at TraversalContext.visitQueue (C:\Users\lande\Documents\js_Battleship\node_modules\@babel\traverse\lib\context.js:124:21)

Process finished with exit code 1

【问题讨论】:

    标签: javascript gulp phpstorm babeljs


    【解决方案1】:

    这是由于 6 和 7 之间的 babel 依赖项不匹配造成的。您目前似乎都安装了。

    尝试从package.json 中的依赖项中删除babel-corebabel-polyfillbabel-preset-env

    如果您需要babel-polyfill,则应安装版本 7 软件包,该软件包已重命名为 @babel/polyfill

    【讨论】:

    • 感谢您的回复,我尝试按照您的建议修改和安装好的依赖项,但它似乎不起作用,可能我误解了一些东西。
    • 我刚刚注意到您有babel-preset-env@babel/preset-env。你应该删除babel-preset-env
    • 是的,我刚刚也注意到了,现在可以使用了,非常感谢您的帮助!
    猜你喜欢
    • 2019-09-24
    • 2019-01-31
    • 2019-02-05
    • 2018-11-18
    • 1970-01-01
    • 2019-03-06
    • 2020-01-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多