我有一个使用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"
}
}
答案 0 :(得分:3)
更明显的问题可能是当您从Heroku网站创建Procfile时,您正在剪切和粘贴" web:node web.js"这基本上告诉heroku哪个文件是你的入口点。你可能有一个不同的入口点,比如说.. server.js所以换掉" web:node web.js"使用" web:node server.js"解决你的问题。
答案 1 :(得分:0)
可能会导致各种各样的问题。
请检查您是否添加了“Procfile”。使用Procfile(应用程序根目录中的文本文件)显式声明应该执行哪个命令来启动Web dyno。在这种情况下,您只需要使用节点执行节点脚本。
这是一个示例Procfile:
web: node web.js
另一个罪魁祸首可能是配置错误的环境变量NODE_ENV
。就个人而言,命令Heroku设置NODE_ENV=production
帮助我解决了我遇到的Cannot find module
错误。执行此操作时,请使用您的 Heroku应用程序名称替换myapp
。
heroku labs:enable user-env-compile -a myapp
heroku config:set NODE_ENV=production
如果这无法解决您的问题,请将devDependencies
中声明的包移至dependencies
,以缓解NODE_ENV
问题。