【问题标题】:"Error: not opened" when trying to install Meteorite packages尝试安装 Meteorite 软件包时出现“错误:未打开”
【发布时间】:2013-05-26 00:46:08
【问题描述】:

Meteorite 安装得很好(我必须使用 sudo -H npm install -g meteorite 作为 Meteorite 的安装说明推荐的),然后我可以使用它在我的项目中安装标准 Meteor 包,例如mrt add jquery。但是,如果我尝试从 Atmosphere 安装任何软件包,例如mrt add routermrt add font-awesome,我得到这个输出:

Installing Meteor

  branch: https://github.com/meteor/meteor.git#master

Installing smart packages


/usr/local/lib/node_modules/meteorite/node_modules/ddp/node_modules/ws/lib/WebSocket.js:175
   else throw new Error('not opened');
           ^
Error: not opened
    at WebSocket.send (/usr/local/lib/node_modules/meteorite/node_modules/ddp/node_modules/ws/lib/WebSocket.js:175:16)
    at DDPClient._send (/usr/local/lib/node_modules/meteorite/node_modules/ddp/lib/ddp-client.js:77:15)
    at WebSocket.<anonymous> (/usr/local/lib/node_modules/meteorite/node_modules/ddp/lib/ddp-client.js:49:10)
    at WebSocket.EventEmitter.emit (events.js:92:17)
    at WebSocket.establishConnection (/usr/local/lib/node_modules/meteorite/node_modules/ddp/node_modules/ws/lib/WebSocket.js:576:8)
    at ClientRequest.<anonymous> (/usr/local/lib/node_modules/meteorite/node_modules/ddp/node_modules/ws/lib/WebSocket.js:488:25)
    at ClientRequest.g (events.js:175:14)
    at ClientRequest.EventEmitter.emit (events.js:106:17)
    at CleartextStream.socketOnData (http.js:1587:11)
    at CleartextStream.read [as _read] (tls.js:477:10)

mrt run 可以正常工作!我在 Meteor v0.6.3.1 和 Meteorite v0.5.1 上。任何想法都将不胜感激,谢谢!

【问题讨论】:

  • 我也看到了这个错误。 Ubuntu 13.04 Node.js 0.10.8
  • 当您使用mrt 添加大气包时,它会将包的本地副本存储在您的~/.meteorite 目录下。由于您以 root 身份安装了npmmeteorite,但您使用用户帐户运行mrt,这可能只是文件权限问题吗? (即它实际上无法将路由器包的内容写入~/.meteorite/packages/router
  • 据说运行sudo -H npm install -g meteorite 可以防止这个问题。我已经运行了mtr uninstall; mtr uninstall --system; rm -rf ~/.npm,它删除了 ~/.meteorite,但这些都没有奏效。 -- 根据您的建议,我刚才rm -rf ~/.meteorite,再次尝试无济于事。
  • 似乎不支持 tls。更改 meteoriteArgs.repoPort = meteoriteArgs.repoPort || 443; 以使用 /usr/local/lib/node_modules/meteorite/lib/atmosphere.js 中的端口 80 可以解决此问题。
  • 为了记录,您可以运行mrt --repoPort=80 而不必弄乱源代码。

标签: meteor meteorite


【解决方案1】:

检查您的节点版本。

截至今天(2013 年 5 月 26 日),当我使用节点 v0.10.8 时,我可以完美地复制此错误(我收到相同的错误消息)。

但是,对于 node node-v0.9.9,mrt add 命令可以工作。

我的环境的其他部分是:

  1. Ubuntu 12.04 LTS x64

  2. mrt --version

    陨石版本 0.5.1

【讨论】:

【解决方案2】:

这是 Node 0.10.8 特有的问题 https://github.com/oortcloud/meteorite/issues/135

我能够通过首先使用这些说明删除节点来解决此问题。一个例外是我在使用 nvm 安装节点时遇到问题,所以我使用了一个包: How do I completely uninstall Node.js, and reinstall from beginning (Mac OS X)

您可以在此处找到下载适用于所有操作系统的 0.10.7 版本节点的安装程序包的链接: http://blog.nodejs.org/2013/05/17/node-v0-10-7-stable/

安装后执行 node -v 来检查版本。如果看起来不正确,请尝试重新启动。出于某种原因,我不得不重新启动才能让我开心。

如果您在重新安装节点后仍然遇到问题,请尝试删除并重新安装陨石和流星。希望这可以帮助遇到同样问题的人。

【讨论】: