无法安装babel插件`transform-es2015-destructuring`

mac*_*ost 1 babel node.js npm

我正在尝试transform-es2015-destructuring在我的Mocha测试中使用Babel插件,但我遇到了问题:

$ node_modules/mocha/bin/mocha --compilers js:babel-core/register test/testMain.js
/home/my/project/node_modules/babel-core/lib/transformation/file/options/option-manager.js:313
          throw new Error("Couldn't find preset " + (0, _stringify2.default)(val) + " relative to directory " + (0, _stringify2.default)(dirname));
          ^

Error: Couldn't find preset "transform-es2015-destructuring" relative to directory "/home/my/project"
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试安装插件时,一切正常:

$ npm install babel-plugin-transform-es2015-destructuring
myproject-reactjs@1.8.1 /home/my/project
??? babel-plugin-transform-es2015-destructuring@6.9.0 
Run Code Online (Sandbox Code Playgroud)

如果我直接使用Babel,我会遇到同样的问题:

./node_modules/babel-cli/bin/babel.js --plugins transform-es2015-destructuring test/testMain.js 
Error: Couldn't find preset "transform-es2015-destructuring" relative to directory "/home/my/project"
Run Code Online (Sandbox Code Playgroud)

换句话说,NPM告诉我我有插件,但Babel告诉我我没有.我很想相信NPM是正确的,但如果它是我无法弄清楚为什么Babel找不到(明确安装的)转换包.

这是我的.babelrc:

{
  "presets": [
    "es2015",
    "react",
    "transform-es2015-destructuring",
    "transform-object-rest-spread"
  ]
}
Run Code Online (Sandbox Code Playgroud)

这是我dependencies参赛作品的相关部分package.json:

"babel": "^6.5.2",
"babel-plugin-transform-es2015-destructuring": "^6.9.0",
"babel-plugin-transform-object-rest-spread": "^6.8.0",
"babel-preset-es2015": "^6.9.0",
"babel-preset-react": "^6.11.1",
Run Code Online (Sandbox Code Playgroud)

谁能建议我怎么解决这个问题?

Exp*_*lls 6

这不是一个preset它是一个plugin,所以一定要确保你设置它作为一个插件,而不是预设的.

在你的.babelrc:

{
  "presets": [
    "es2015",
    "react"
  ],
  "plugins": [
    "transform-es2015-destructuring",
    "transform-object-rest-spread"
  ]
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,您可以排除使用 --plugins

预设本质上是插件的集合.

顺便说一句,您可以使用node_modules/.bin/babel本地安装的可执行文件,而不是尝试找到模块本身.