![](/img/trans.png)
[英]Error: Cannot find module 'express-session' when deploying to Heroku
[英]Error: Cannot find module './layer' when loading Express in Heroku
我目前正在Heroku上构建Node.js Express应用程序。 它在本地工作正常,但是当我将其上传到Heroku时,出现以下错误:
2016-09-09T14:14:46.606481+00:00 app[web.1]: [DEBUG] Loading modules...
2016-09-09T14:14:46.607904+00:00 app[web.1]: [DEBUG] Loading express...
2016-09-09T14:14:46.632062+00:00 app[web.1]: module.js:457
2016-09-09T14:14:46.632064+00:00 app[web.1]: throw err;
2016-09-09T14:14:46.632065+00:00 app[web.1]: ^
2016-09-09T14:14:46.632065+00:00 app[web.1]:
2016-09-09T14:14:46.632066+00:00 app[web.1]: Error: Cannot find module './layer'
当我去查看本地node_modules时,会出现文件node_modules\\express\\lib\\router\\layer.js
。
然后,我运行heroku run bash
并看到:
~/node_modules/express/lib/router $ ls
index.js route.js
所以我跑:
~ $ rm -rf node_modules/
~ $ npm i
~ $ npm start
而且一切正常。 但是注销heroku bash并停止工作。 之后,如果我重新登录并运行npm start
,它将再次失败,并显示第一条消息:
Running bash on little-owl... up, run.6609
~ $ npm start
> little-owl@0.0.1 start /app
> node server.js
[DEBUG] Loading modules...
[DEBUG] Loading express...
module.js:457
throw err;
^
Error: Cannot find module './layer'
有任何想法吗?
Heroku不是VPS。 在heroku run bash
,您不会对应用程序的文件系统进行任何永久更改。 当您进行部署时,一切都在构建时完成。
从这里的症状看,您的应用node_modules
在过去的某个时间已经签入了一些不完整的node_modules
。 因此,首先,从git中删除node_modules
:
$ echo 'node_modules' >> .gitignore
$ git rm -r --cached node_modules
$ git commit -am 'ignore node_modules'
然后,禁用应用程序的缓存并推送:
$ heroku config:set NODE_MODULES_CACHE=false
$ git push heroku master
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.