尝试运行meteor应用程序

时间:2018-04-11 16:56:01

标签: javascript node.js meteor

我正在接管使用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

我尝试过以下方法:

  • 视窗:
    • 卸载nodejs v6并安装v8
    • 卸载流星并使用choco重新安装
  • Linux中:
    • 使用包管理器安装节点(v6.12.3)
    • 使用sh
    • 安装meteor

在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作为修复程序,并且想要深入了解它。

1 个答案:

答案 0 :(得分:1)

看起来你的违规行来自winston-mongodb包。自Meteor 1.4发布以来,已经发布了2个主要版本。

因此,"latest"中的semver规范package.json很可能太松散了。它允许全新安装来获取最新版本的软件包,它使用的新ES语法与Meteor版本附带的节点版本不兼容。

根据@Pogrindis的建议,您应该能够通过检查工作安装的node_modules来确定要使用的正确winston-mogodb版本。

您也可以尝试升级Meteor。版本1.6现在使用节点8 +。

您的工作安装中的软件包也不太可能在本地进行转换。如果限制包版本仍然不起作用,则更有可能。