【发布时间】:2014-01-27 04:50:52
【问题描述】:
我对整个“节点”js 有点陌生。在尝试从http://mean.io/ 安装 MEAN 包时,我忠实地按照以下步骤操作:
我“cd”到我的目录,运行“npm install”,然后“grunt”命令,得到这个错误:
Error: Cannot find module 'coffee-script'
所以我顺其自然。 npm install coffee-script,再次运行“grunt”。
Error: Cannot find module 'getobject'
如果有耐心,我会决定“好吧,忘记咕噜声”。我运行“节点服务器”。然后我得到这个错误:
Error: Cannot find module 'merge-descriptors'
怎么了?我怎样才能让 MEAN 在这里工作? (我认为 npm 应该让生活更轻松)。
12/31/13 更新:当我查看 npm install 的输出时,有许多“错误:EMFILE”错误。据我了解,这些错误与打开的文件过多有关,而优雅的 fs 是解决此问题的方法。下面粘贴的示例 EMFILE 错误:
npm ERR! System Darwin 13.0.0
npm ERR! command "node" "/usr/local/bin/npm" "install"
npm ERR! cwd /Users/cnokes/Desktop/mean-master
npm ERR! node -v v0.10.7
npm ERR! npm -v 1.2.21
npm ERR! path /Users/cnokes/Desktop/mean-master/node_modules/grunt/node_modules/iconv-lite/README.md
npm ERR! code EMFILE
npm ERR! errno 20
npm ERR! tar.unpack error reading /var/folders/wv/xrm8qphn5bsgfj5w45kqrwl9lgq2j2/T/npm-27019/1388513549132-0.22752901865169406/tmp.tgz
安装了 graceful-fs 后,我重新运行 npm install 并得到以下几个错误:
npm ERR! Error: ENOENT, utime '/Users/cnokes/Downloads/mean-master2/node_modules/express/node_modules/fresh/index.js'
【问题讨论】:
-
我能够重现这个
-
显然,我遗漏了一些可能是 Node.js 基础的东西。如果我转到抛出上述错误的节点模块并“npm install”它们的依赖项,这些模块会停止抛出错误,但它们的依赖项有时是全局依赖项的副本。所以,我很困惑。
-
我没有研究过 mean.io,也许他们使用了模块但没有包含在依赖项中,或者可能是 grunt 的问题 [?] 但是,如果您手动安装 3 个模块并查看如果您可以手动安装它们? npm install coffee-script npm install getobject npm install merge-descriptors
-
我已经手动安装了这些模块以及更多模块,但仍然没有运气。我最终决定只在 MEAN 所需的每个 node_module 上运行 npm install。这样做会导致很多重复的模块。例如,MEAN 和 Express 都需要“buffer-crc32”模块,但 Express 似乎没有看到该模块在全局应用程序中可用,并且仅当该模块位于 /express/node_modules/buffer- 中时才会工作crc32 文件夹(相对于全局应用程序文件夹 MEAN/node_modules/buffer-crc32)。希望这是有道理的。
-
您使用的是什么操作系统?它适用于我在 osx 和 linux 上。
标签: javascript node.js