Node.js 由于缺少MongoDB,无法在新安装的Ubuntu linux上运行Meteor应用程序

Node.js 由于缺少MongoDB,无法在新安装的Ubuntu linux上运行Meteor应用程序,node.js,linux,mongodb,meteor,Node.js,Linux,Mongodb,Meteor,我正在尝试在Linux上运行一个项目。通常我们在macOS上开发,我认为Linux上的设置非常相似 在我的机器上获取应用程序的步骤如下: 通过shell脚本执行,根据网站安装nodejs 通过shell脚本执行,根据网站安装Meteor git签出[应用程序的git URL] cd eaab(eaab=应用程序名称) npm安装 捷运安装 npm运行启动 package.json包含多个运行脚本,调用的启动脚本定义如下: "scripts": { "start": "meteor -

我正在尝试在Linux上运行一个项目。通常我们在macOS上开发,我认为Linux上的设置非常相似

在我的机器上获取应用程序的步骤如下:

  • 通过shell脚本执行,根据网站安装nodejs
  • 通过shell脚本执行,根据网站安装Meteor
  • git签出[应用程序的git URL]
  • cd eaab(eaab=应用程序名称)
  • npm安装
  • 捷运安装
  • npm运行启动
package.json包含多个运行脚本,调用的启动脚本定义如下:

"scripts": {
    "start": "meteor --settings settings/development.json",
    [removed other scripts not relevant right now]
  },
尽管所有这些在macOS上都能正常工作,但在Linux上它的故障如下:

skaupp@developers:~/Workspace/meteor/eaab
>npm run start                                                                                                                                                                                                       (git)-[master] 

> eaab@1.0.0 start /home/skaupp/Workspace/meteor/eaab
> meteor --settings settings/development.json

[[[[[ ~/Workspace/meteor/eaab ]]]]]

events.js:183
      throw er; // Unhandled 'error' event
      ^

Error: spawn /usr/lib/node_modules/meteor/mongodb/bin/mongod ENOENT
    at _errnoException (util.js:1022:11)
    at Process.ChildProcess._handle.onexit (internal/child_process.js:190:19)
    at onErrorNT (internal/child_process.js:372:16)
    at _combinedTickCallback (internal/process/next_tick.js:138:11)
    at process._tickCallback (internal/process/next_tick.js:180:9)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! eaab@1.0.0 start: `meteor --settings settings/development.json`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the eaab@1.0.0 start script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /home/skaupp/.npm/_logs/2018-04-05T09_43_23_575Z-debug.log
我假设mongodb通常会在一般Meteor安装或运行mrt安装期间安装,但情况似乎并非如此。我可能必须手动安装它,或者更改设置环境的方式。无论哪种情况,我都知道,除了mongodb之外,Meteor所需的其他工具可能不会自动设置


我如何修复这个问题,或者换句话说,我缺少了什么?

Meteor安装非常简单,非常简单。您只运行命令
curlhttps://install.meteor.com/ |sh
在Linux环境中。没别的了。Meteor有自己的Node.js和MongoDB包,它们是自动安装的。Meteor将默认使用这些软件包,而不是您单独安装的软件包。我建议你检查一下官方文件,因为它很实用,而且内容丰富

我根据网站通过shell脚本执行安装了Meteor。我在我的问题中也提到了这一点。在你的问题中,我看到许多多余的步骤会破坏你的设置。这就是为什么我推荐一个清晰的安装,这在我的回答中很清楚。成千上万的人已经安装了Meteor,并在其标准程序中与任何NPM包一起使用。根本原因可能不是mongodb本身,而是通过“旧”方式安装的自托管meteorite依赖项(因此调用mrt install)。您是否使用安装在Meteor外部的npm二进制文件运行了
npm install
?因为通常您应该使用meteor npm安装来使用meteor捆绑的npm。由于兼容性原因,Meteor自带一个自己的节点环境,因此您也不需要安装外部nodeJs。此外,
mrt安装
用于传统应用程序,在最近的Meteor项目中很少需要。如果您创建了一个新的meteor项目,比如
meteor create testproject&&cd testproject&&meteor npm install&&meteor
,会发生什么?这一点很好。Meteor设置似乎完全出了问题,因为“Meteor创建测试项目”已经失败,因为它无法打开“/usr/lib/node_modules/Meteor/examples”。我只是想知道,当我通过curl/sh安装Meteor时,这是怎么发生的,正如网站上提到的。(在macOS上也是这样做的,到目前为止没有任何问题。)阅读本文后,我认为这将涉及到用户权限领域。您是否安装或运行了具有root权限的任何命令?这有时可能是问题的原因。流星通常不需要根。我发现了这个问题。我从零开始检查了应用程序,并没有使用“npm安装”,而是使用了“meteor npm安装”,正如您在第一条评论中所建议的那样。还需要“mrt安装”,但现在应用程序可以正常工作了!