【问题标题】:Heroku App Errors on Missing Node Module (But It Looks Like It's Installed)缺少节点模块的 Heroku 应用程序错误(但看起来已经安装)
【发布时间】:2016-03-20 07:23:15
【问题描述】:

我正在尝试使用 node 和 Heroku 运行,但我遇到了早期的障碍。在this guide 之后,我在本地看不到我的 Heroku 应用程序。运行

heroku local web

然后转到 localhost:5000 会产生以下错误:

错误:找不到模块“ejs”

我已经按照建议的here 尝试了npm install ejs -g,看起来npm list -g --depth=0 工作正常,表明ejs@2.3.4 已安装。我该怎么做才能解决这个奇怪的错误?

【问题讨论】:

  • 您是否尝试暂时删除 ejs 作为依赖项,看看它是否在没有它的情况下正常启动(修改 package.json)
  • @adeneo 是的。页面正常加载。我觉得我最终需要ejs 模块,但如果它作为一个部门包含在教程中。您对如何更永久地解决此问题有任何想法吗? EJS 看起来就像下划线/lodash 模板(如果我没记错的话)。是否值得花时间尝试使其工作,或者我只是更换它。
  • 我真的很喜欢 EJS,并且一直在使用它,我讨厌 Jade,但这只是我。下面的答案可能是关于某些事情的,但是鉴于 EJS 是您的依赖项的一部分,您所要做的就是在您正在使用的目录中调用 npm install,并且所有依赖项都应该自动安装。
  • @adeneo 是的,这也是我的理解。我认为g 标志不会导致require 出现任何错误。我只是好奇,你为什么不喜欢 Jade 而不是 EJS,如果你能用几句话来概括的话.. 谢谢!

标签: javascript node.js heroku


【解决方案1】:

npm install -g 全局安装包。

当你引用它们时,节点找不到全局安装的包

var ejs = require('ejs')

您需要使用npm install --save ejs 进行安装。这会将包安装到本地 node_modules 目录中,并将其保存到您的 package.json 中

This is because when node looks for a package 路径不是以./ 开头的,它会在当前目录的node_modules 目录中查找以包命名的目录。然后它进入一个目录并执行相同的操作,一直循环直到它到达文件系统的根目录。

例如如果你在/users/thomas/src/myproject,它会寻找:

/users/thomas/src/myproject/node_modules/ejs
/users/thomas/src/node_modules/ejs
/users/thomas/node_modules/ejs
/users/node_modules/ejs
/node_modules/ejs

如果其中一个地方不存在,则不会被找到。

There are some deprecated ways 也可以在其他地方查看,但不建议这样做,因为它涉及使用很难记住在已部署机器上设置的环境变量)

另外,如果您使用的是 heroku,您需要在 package.json 文件的 dependencies 中列出该软件包,以便 heroku 知道安装它。 npm install -g 不会在您的 package.json 中添加条目

不过有一些建议。

  1. 不要使用 EJS。那里有更好的(并且目前维护的)模板包。我们在旧的遗留系统中使用 EJS,这比任何事情都更令人沮丧。
  2. 永远不要使用 -g 安装软件包,除非您真的希望该工具是全局的。大多数情况下,您希望它在您的项目中本地化。

【讨论】:

  • 谢谢。我只是使用-g 作为最后的手段。我试过正常的install ___ --save,但不明白为什么它不起作用。你能推荐一个比 EJS 更令人沮丧的模板吗?
  • @thomas 我在几个项目中使用过车把和玉石,不介意使用它们。您可能会看到哪一个支持您的用例。如果在执行install 后仍然找不到模块,请检查所有这些路径或在 npm 安装日志中查找疯狂错误?
  • 我需要安装log,还是某处有全局npm日志?
  • 如果 npm 在某项任务中失败,您将在运行命令的目录中获得一个npm-debug.log。如果没有,您可以尝试发布您需要 ejs 的代码,以便我们看看还有什么问题。
  • 我不确定这次为什么会起作用,但在项目级别安装解决了我的问题。感谢您的所有帮助!
猜你喜欢
  • 2022-07-22
  • 1970-01-01
  • 1970-01-01
  • 2012-03-31
  • 1970-01-01
  • 1970-01-01
  • 2016-07-10
  • 2015-08-14
  • 1970-01-01
相关资源
最近更新 更多