当我尝试运行使用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
未打印到控制台。
答案 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