【问题标题】:NodeJS - setting up mean.io cannot find module errorsNodeJS - 设置 mean.io 找不到模块错误
【发布时间】: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


【解决方案1】:

我遇到过这个问题,并认为这可能与另一个问题有关。 基本上它与我们执行 npm 安装时打开的打开文件的数量(很多)有关。 它已经在这里很好地写了博客 - http://otaqui.com/blog/1618/how-to-fix-error-emfile-too-many-open-files-from-yeoman-and-npm/ 我更新了平均常见问题解答 https://github.com/linnovate/mean/wiki/Faq

【讨论】:

  • 谢谢 Lior。从终端运行“ulimit -n 1024”,因此没有 EMFILE 或 ENOENT 错误,并且一切都正确安装并运行。
猜你喜欢
  • 2017-12-06
  • 1970-01-01
  • 2018-02-26
  • 2013-09-29
  • 2018-12-21
  • 2022-01-15
  • 2017-08-29
  • 2016-07-08
  • 1970-01-01
相关资源
最近更新 更多