Heroku部署错误:部署后无法运行Node App:无法find模块'/app/web.js'

我有一个使用Express和MongoDB(mongoose)的node.js应用程序。 它在当地运行得很好。 我似乎毫无问题地将其部署到了heroku,但是当我试图实际启动应用程序时,它崩溃了。 heroku日志说:错误:找不到模块'/app/web.js'

我是新来的,所以任何帮助将不胜感激。 谢谢! 应用程序将帮助我的1型糖尿病女儿。

的package.json:

{ "name": "projectglu", "version": "0.0.0", "dependencies": { "express": "~3.4.3", "lodash": "~2.4.1", "mongoose": "~3.8.8", "connect-mongo": "~0.4.0", "passport": "~0.2.0", "passport-local": "~0.1.6", "ejs": "~0.8.4" }, "devDependencies": { "grunt": "~0.4.1", "grunt-autoprefixer": "~0.4.0", "grunt-bower-install": "~0.7.0", "grunt-concurrent": "~0.4.1", "grunt-contrib-clean": "~0.5.0", "grunt-contrib-coffee": "~0.7.0", "grunt-contrib-compass": "~0.6.0", "grunt-contrib-concat": "~0.3.0", "grunt-contrib-copy": "~0.4.1", "grunt-contrib-cssmin": "~0.7.0", "grunt-contrib-htmlmin": "~0.1.3", "grunt-contrib-imagemin": "~0.5.0", "grunt-contrib-jshint": "~0.7.1", "grunt-contrib-uglify": "~0.2.0", "grunt-contrib-watch": "~0.5.2", "grunt-google-cdn": "~0.2.0", "grunt-newer": "~0.5.4", "grunt-ngmin": "~0.0.2", "grunt-rev": "~0.1.0", "grunt-svgmin": "~0.2.0", "grunt-usemin": "~2.0.0", "jshint-stylish": "~0.1.3", "load-grunt-tasks": "~0.2.0", "time-grunt": "~0.2.1", "grunt-express-server": "~0.4.5", "grunt-open": "~0.2.0", "connect-livereload": "~0.3.0", "karma-ng-scenario": "~0.1.0", "grunt-karma": "~0.6.2", "karma-firefox-launcher": "~0.1.3", "karma-script-launcher": "~0.1.0", "karma-html2js-preprocessor": "~0.1.0", "karma-jasmine": "~0.1.5", "karma-chrome-launcher": "~0.1.2", "requirejs": "~2.1.10", "karma-requirejs": "~0.2.1", "karma-coffee-preprocessor": "~0.1.2", "karma-phantomjs-launcher": "~0.1.1", "karma": "~0.10.9", "karma-ng-html2js-preprocessor": "~0.1.0", "grunt-mocha-test": "~0.8.1", "supertest": "~0.8.2", "should": "~2.1.0", "grunt-env": "~0.4.1", "grunt-node-inspector": "~0.1.3", "grunt-nodemon": "~0.2.0", "open": "~0.0.4" }, "engines": { "node": ">=0.10.0" }, "scripts": { "test": "grunt test" } } 

更清楚的问题可能是,当你从Heroku网站创buildProcfile的例子,你正在剪切和粘贴“web:node web.js”,这基本上告诉heroku哪个文件是你的入口点。 你可能有一个不同的入口像say .. server.js,所以用“web:node server.js”换掉“web:node web.js”来解决你的问题。

有各种各样的问题可能导致这一点。

请检查您是否添加了“Procfile”。使用应用程序根目录下的Procfile文本文件来显式声明应执行哪个命令来启动Web dyno。 在这种情况下,您只需使用节点执行节点脚本。

这是一个例子Procfile:

web: node web.js

另一个罪魁祸首可能是configuration错误的环境variablesNODE_ENV 。 个人而言,指挥Heroku设置NODE_ENV=production帮助我解决了一个Cannot find module我遇到的Cannot find module错误。 当你这样做,用你的 Heroku应用程序名称replacemyapp

heroku labs:enable user-env-compile -a myapp heroku config:set NODE_ENV=production

如果这不能解决您的问题,将在devDependencies声明的包移到dependencies ,以减轻NODE_ENV问题。