Babel 6:太多参数传递错误

时间:2015-11-03 13:54:22

标签: javascript babeljs

当我尝试运行使用babel 6的服务器时,出现以下错误:

Error: /path/to/myapp/server.js: t.Identifier: Too many arguments passed. Received 3 but can receive no more than 1

这是package.json的样子:

{
  "scripts": {
  "start": "node app.js",
  "postinstall": "bash ./scripts/npm-post.sh",
  "test": "mocha test"
},
  "dependencies": {
    "babel": "^6.0.15",
    "babel-core": "^6.0.20",
    "babel-preset-react": "^6.0.15",
    "babel-preset-stage-0": "^6.0.15",
    "react": "^0.14.2",
    "react-dom": "^0.14.2",
    "react-helmet": "^2.1.1",
    "react-router": "^1.0.0-rc3",
    "reactify": "^1.1.1",
  },
  "devDependencies": {
    "babel-preset-es2015": "^6.0.15",
  }
}

这是我的app.js

require('babel-core/register')({
  "presets": [
    "es2015",
    'react'
  ]
});
require('./server.js')

server.js

console.log('hi')

hi未打印到控制台。

2 个答案:

答案 0 :(得分:4)

我已经解决了这个问题,它似乎是babel-plugin-transform-react-jsx的v6.0.14版本中的一个错误,在这里: https://github.com/babel/babel/blob/v6.0.14/packages/babel-plugin-transform-react-jsx/src/index.js#L36

最新版本的babel react预设需要插件的v6.0.14版本 https://github.com/babel/babel/blob/master/packages/babel-preset-react/package.json#L13

babel-plugin-transform-react-jsx的最新版本(v6.0.18)解决了这个问题。 https://github.com/babel/babel/blob/master/packages/babel-plugin-transform-react-jsx/src/index.js#L36

因此,当我使用react预设时,我收到了上述错误。

要解决此问题,我将我的babel配置更改为以下内容(请注意,我切换到使用.babelrc而不是app.js中的内联配置,但结果应该相同。

.babelrc是:

{
  "presets": ["es2015", "react"]
}

.babelrc现在是:

{
  "presets": ["es2015"],
  "plugins": ["transform-react-jsx"]
}

package.json现在增加了依赖性

"babel-plugin-transform-react-jsx": "^6.0.18",

答案 1 :(得分:3)

我通过卸载babel-preset-react插件然后重新安装来修复此问题,以便安装最新的依赖项。如果这样做有效,您可能需要rm -rf node_modules并删除shrinkwrap(如果有),然后重新运行npm install