thi*_*ago 5 javascript heroku npm gulp
我已克隆了meanjs repo并部署到heroku但应用程序将无法运行并显示以下错误:应用程序错误应用程序中出错并且无法提供您的页面.如果您是应用程序所有者,请检查日志以获取详细信息.
检查日志,它说:
17-04-18T03:16:50.720375+00:00 app[web.1]:
2017-04-18T03:16:50.730925+00:00 app[web.1]: sh: 1: gulp: not found
2017-04-18T03:16:50.742737+00:00 app[web.1]: npm ERR! file sh
2017-04-18T03:16:50.743150+00:00 app[web.1]: npm ERR! code ELIFECYCLE
2017-04-18T03:16:50.743568+00:00 app[web.1]: npm ERR! errno ENOENT
Run Code Online (Sandbox Code Playgroud)
这是我的package.json文件:
{
"name": "meanjs",
"description": "Full-Stack JavaScript with MongoDB, Express, AngularJS, and Node.js.",
"version": "0.5.0",
"meanjs-version": "0.5.0",
"private": false,
"author": "https://github.com/meanjs/mean/graphs/contributors",
"license": "MIT",
"repository": {
"type": "git",
"url": "https://github.com/meanjs/mean.git"
},
"engines": {
"node": ">=6.3.0",
"npm": ">=3.10.8"
},
"scripts": {
"update": "npm update && npm prune && bower install --allow-root && bower prune --allow-root",
"clean": "rm -rf node_modules/ public/lib/",
"reinstall": "npm cache clean && npm run clean && npm install",
"start": "gulp",
"start:prod": "gulp prod",
"start:debug": "node-debug --web-host 0.0.0.0 server.js & gulp debug",
"gulp": "gulp",
"lint": "gulp lint",
"test": "gulp test",
"test:server": "gulp test:server",
"test:server:watch": "gulp test:server:watch",
"test:client": "gulp test:client",
"test:e2e": "gulp test:e2e",
"test:coverage": "gulp test:coverage",
"postinstall": "bower install --allow-root && bower prune --allow-root",
"generate-ssl-certs": "scripts/generate-ssl-certs.sh"
},
"dependencies": {
"acl": "~0.4.10",
"async": "~2.3.0",
"body-parser": "~1.17.1",
"bower": "~1.8.0",
"chalk": "~1.1.3",
"compression": "~1.6.2",
"connect-flash": "~0.1.1",
"connect-mongo": "~1.3.2",
"cookie-parser": "~1.4.1",
"crypto": "0.0.3",
"express": "~4.15.2",
"express-hbs": "^1.0.4",
"express-session": "~1.15.2",
"generate-password": "~1.3.0",
"glob": "~7.1.1",
"helmet": "~2.3.0",
"jasmine-core": "~2.5.2",
"lodash": "~4.17.4",
"lusca": "~1.4.1",
"method-override": "~2.3.8",
"mocha": "~3.2.0",
"mongoose": "~4.9.3",
"morgan": "~1.8.1",
"multer": "~1.3.0",
"nodemailer": "~2.6.4",
"owasp-password-strength-test": "~1.3.0",
"passport": "~0.3.2",
"passport-facebook": "~2.1.1",
"passport-github": "~1.1.0",
"passport-google-oauth": "~1.0.0",
"passport-linkedin": "~1.0.0",
"passport-local": "~1.0.0",
"passport-paypal-openidconnect": "~0.1.1",
"passport-twitter": "~1.0.4",
"serve-favicon": "~2.4.2",
"socket.io": "^1.7.3",
"validator": "~7.0.0",
"winston": "^2.3.1",
"wiredep": "~4.0.0"
},
"devDependencies": {
"coveralls": "~2.13.0",
"del": "^2.2.2",
"eslint": "~2.2.0",
"eslint-config-airbnb": "~6.0.2",
"gulp": "~3.9.1",
"gulp-angular-templatecache": "~2.0.0",
"gulp-autoprefixer": "~3.1.0",
"gulp-concat": "~2.6.0",
"gulp-csslint": "~1.0.0",
"gulp-csso": "~3.0.0",
"gulp-eslint": "~3.0.1",
"gulp-imagemin": "~3.2.0",
"gulp-istanbul": "~1.1.1",
"gulp-less": "~3.3.0",
"gulp-load-plugins": "~1.5.0",
"gulp-mocha": "~3.0.1",
"gulp-ng-annotate": "~2.0.0",
"gulp-nodemon": "~2.2.1",
"gulp-protractor": "^3.0.0",
"gulp-refresh": "~1.1.0",
"gulp-rename": "~1.2.2",
"gulp-rev": "^7.1.2",
"gulp-sass": "~3.1.0",
"gulp-uglify": "~2.1.2",
"gulp-util": "~3.0.7",
"imagemin-pngquant": "~5.0.0",
"istanbul": "~0.4.2",
"karma": "~1.6.0",
"karma-chrome-launcher": "~2.0.0",
"karma-coverage": "~1.1.1",
"karma-firefox-launcher": "~1.0.0",
"karma-jasmine": "~1.1.0",
"karma-ng-html2js-preprocessor": "~1.0.0",
"karma-phantomjs-launcher": "~1.0.0",
"phantomjs-prebuilt": "~2.1.14",
"lcov-result-merger": "~1.2.0",
"run-sequence": "~1.2.2",
"semver": "~5.3.0",
"should": "~11.2.1",
"supertest": "~2.0.0"
}
}
Run Code Online (Sandbox Code Playgroud)
怎么了?
Heroku将尝试检测您正在部署的应用程序类型.
为了确定如何启动你的应用程序,Heroku首先寻找一个Procfile.如果Node.js应用程序不存在Procfile,我们将尝试
web通过package.json中的启动脚本启动默认进程.
我假设没有Procfile,Heroku试图运行npm start.
您的start脚本只是默认的gulp任务,但由于没有安装gulp,因为它未在其中列出dependencies,因此失败.
默认情况下,我们将其设置
NPM_CONFIG_PRODUCTION为true以仅安装生产依赖项.如果要安装devDependencies,可以禁用生产模式:Run Code Online (Sandbox Code Playgroud)$ heroku config:set NPM_CONFIG_PRODUCTION=false但是,由于您通常不希望生产构建中存在所有开发依赖项,因此最好只将生产构建实际需要的依赖项(bower,grunt,gulp等)移动到
dependencies.
devDependencies应该只包含生产中不需要的依赖项.由于你的应用程序依赖于gulp和可能的大多数列出的插件,你需要将它们移动到dependencies.
正如Nathan在他的回答中提到的,如果你不想移动你devDependencies,你可以使用poststartnpm脚本来卸载devDependencies.
"scripts": {
"poststart": "npm prune --production"
...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2850 次 |
| 最近记录: |