我正在接管使用Meteor版本1.4.2.3开发的项目。使用meteor run
运行项目后,我得到以下异常:
W20180411-12:35:00.369(-4)? (STDERR) packages\modules.js:583
W20180411-12:35:00.603(-4)? (STDERR) const {LEVEL, MESSAGE} = require('triple-beam');
W20180411-12:35:00.603(-4)? (STDERR) ^
W20180411-12:35:00.603(-4)? (STDERR)
W20180411-12:35:00.604(-4)? (STDERR) SyntaxError: Unexpected token {
W20180411-12:35:00.604(-4)? (STDERR) at Object.exports.runInThisContext (vm.js:53:16)
W20180411-12:35:00.604(-4)? (STDERR) at C:\Users\roberth\Programming Projects\xxx\.meteor\local\build\programs\server\boot.js:289:30
W20180411-12:35:00.605(-4)? (STDERR) at Array.forEach (native)
W20180411-12:35:00.605(-4)? (STDERR) at Function._.each._.forEach (C:\Users\roberth\AppData\Local\.meteor\packages\meteor-tool\1.4.2_3\mt-os.windows.x86_32\dev_bundle\server-lib\node_modules\underscore\underscore.js:79:11)
W20180411-12:35:00.605(-4)? (STDERR) at C:\Users\roberth\Programming Projects\xxx\.meteor\local\build\programs\server\boot.js:128:5
W20180411-12:35:00.605(-4)? (STDERR) at C:\Users\roberth\Programming Projects\xxx\.meteor\local\build\programs\server\boot.js:344:5
W20180411-12:35:00.606(-4)? (STDERR) at Function.run (C:\Users\roberth\Programming Projects\xxx\.meteor\local\build\programs\server\profile.js:480:12)
W20180411-12:35:00.606(-4)? (STDERR) at C:\Users\roberth\Programming Projects\xxx\.meteor\local\build\programs\server\boot.js:343:11
=> Exited with code: 1
我尝试过以下方法:
在Windows和Linux上都发生了同样的错误,老实说我不知道是什么导致了这个问题。
我在这里缺少什么?
修改
package.json
{
"name": "meteor",
"private": true,
"scripts": {
"start": "meteor run"
},
"dependencies": {
"babel": "^6.23.0",
"babel-cli": "^6.26.0",
"babel-runtime": "6.18.0",
"bson-ext": "^1.0.1",
"meteor-node-stubs": "~0.2.0",
"moment": "^2.17.1",
"mongoose": "~4.4",
"triple-beam": "^1.1.0",
"winston": "2.x",
"winston-mongodb": "latest"
}
}
更新
由于我不知道meteor使用内置版本的Node,我卸载了节点,流星并删除了repo。然后我通过choco安装了meteor并克隆了存储库。运行meteor npm install
后跟meteor run
后,我收到了与上述意外令牌完全相同的问题。
更新2
我已经能够确定node_modules目录有问题。如果我将node_modules目录从工作机器复制到我的开发盒,它按预期工作。
新问题:如何确定哪个包有问题?我犹豫是否将node_modules目录提交到git作为修复程序,并且想要深入了解它。
答案 0 :(得分:1)
看起来你的违规行来自winston-mongodb包。自Meteor 1.4发布以来,已经发布了2个主要版本。
因此,"latest"
中的semver规范package.json
很可能太松散了。它允许全新安装来获取最新版本的软件包,它使用的新ES语法与Meteor版本附带的节点版本不兼容。
根据@Pogrindis的建议,您应该能够通过检查工作安装的node_modules
来确定要使用的正确winston-mogodb版本。
您也可以尝试升级Meteor。版本1.6现在使用节点8 +。
您的工作安装中的软件包也不太可能在本地进行转换。如果限制包版本仍然不起作用,则更有可能。