我正在为heroku部署一个卑鄙的应用程序,并且正在使用bower和grunt.我应该在git repo中包含我的节点模块吗?如果没有,我真的不确定我需要如何部署,因为post脚本引用了节点模块的bower安装.我应该在git repo中包含我的bower_components吗?这似乎不是我应该因为不是后记的全部内容执行bower安装在heroku上?但是当我这样做时,我得到一个错误.这是我的凉亭依赖:
"dependencies": { "angular": "1.2.x","angular-mocks": "~1.2.x","jquery": "1.10.2","bootstrap": "~3.1.1","angular-bootstrap" : "0.11.0" }
还有我的package.json
{ "main": "server.js","engines": { "node": "0.10.29" },"dependencies": { "express": "~3.4.x","mongoose": "~3.6.x","mongodb": "^1.4.0","ejs": "*","email-templates" : "1.0.0","crypto": "0.0.3","lodash": "~2.4.1","aws-sdk": "2.0.0-rc11","passport" : "~0.1.17","passport-local" : "~0.1.6","connect-flash" : "~0.1.1","winston": "0.6.x","gm" : "1.16.0","apn" : "1.5.2","bcrypt-nodejs" : "latest","angular-wizard": "latest","point-in-polygon": "latest","node-mailgun": "0.0.2","nodemailer" : "0.7.0","passport-facebook" : "1.0.3" },"devDependencies": { "supertest": "0.5.x","bower": "0.6.x","mocha": "1.8.x","should": "1.2.x","karma": "~0.10","protractor": "^0.24.2","http-server": "^0.6.1","bower": "^1.3.1","grunt-cli": "~0.1.13","grunt-env": "~0.4.1","grunt-node-inspector": "~0.1.3","grunt-contrib-watch": "~0.6.1","grunt-contrib-jshint": "~0.10.0","grunt-contrib-csslint": "^0.2.0","grunt-contrib-uglify": "~0.4.0","grunt-contrib-cssmin": "~0.9.0","grunt-nodemon": "~0.2.0","grunt-concurrent": "~0.5.0","grunt-mocha-test": "~0.10.0","grunt-karma": "~0.8.2","grunt-protractor-runner": "~1.0.0","load-grunt-tasks": "~0.4.0","jasmine-reporters": "~0.4.0","karma": "~0.12.0","karma-jasmine": "~0.2.1","karma-coverage": "~0.2.0","karma-chrome-launcher": "~0.1.2","karma-firefox-launcher": "~0.1.3","karma-phantomjs-launcher": "~0.1.2","karma-junit-reporter": "~0.2","shelljs": "^0.2.6","xunit-file": "*" },"scripts": { "postinstall": "node_modules/.bin/bower install","pretest": "npm install","test": "karma start test/karma.conf.js","test-single-run": "karma start test/karma.conf.js --single-run","preupdate-webdriver": "npm install","update-webdriver": "webdriver-manager update","preprotractor": "npm run update-webdriver","protractor": "protractor test/protractor-conf.js","update-index-async": "node -e \"require('shelljs/global'); sed('-i',/\\/\\/@@NG_LOADER_START@@[\\s\\S]*\\/\\/@@NG_LOADER_END@@/,'//@@NG_LOADER_START@@\\n' + cat('bower_components/angular-loader/angular-loader.min.js') + '\\n//@@NG_LOADER_END@@','app/index-async.html');\"" } }
我收到此错误:
5816 info fsevents@0.2.0 Failed to exec install script 5817 error fsevents@0.2.0 install: `node-gyp rebuild` 5817 error Exit status 1 5818 error Failed at the fsevents@0.2.0 install script. 5818 error This is most likely a problem with the fsevents package,5818 error not with npm itself. 5818 error Tell the author that this fails on your system: 5818 error node-gyp rebuild 5818 error You can get their info via: 5818 error npm owner ls fsevents 5818 error There is likely additional logging output above. 5819 error System Linux 3.8.11-ec2 5820 error command "/tmp/build_2cc32425-eae7-45af-8b95-104e1c2c7c53/vendor/node/bin/node" "/tmp/build_2cc32425-eae7-45af-8b95-104e1c2c7c53/vendor/node/bin/npm" "rebuild" 5821 error cwd /tmp/build_2cc32425-eae7-45af-8b95-104e1c2c7c53 5822 error node -v v0.10.29 5823 error npm -v 1.4.14 5824 error code ELIFECYCLE 5825 verbose exit [ 1,true ] ! Push rejected,Failed to compile Node.js app
我已经读过我需要npm install -g karma但这没有帮助.或者bower安装错误…我的开发依赖项是不正确的?
解决方法
我发现Joe Eames的这个视频教程对于使用MEAN堆栈进行开发并部署到Heroku:
http://pluralsight.com/training/courses/TableOfContents?courseName=building-angularjs-nodejs-apps-mean&highlight=非常有用
给出的指导是你不应该在git repo中包含你的node_modules,你应该让Heroku在部署时为你构建那些.
阅读您的文件似乎您可能列出了太多的依赖项.即我认为你不需要将’Bower’列为package.json中的dev-dependency.同样,你在package.json中包含的脚本也不是我以前见过的.我将使用Heroku命令或在此处找到的grunt构建包进行部署:github.com/mbuchetics/heroku-buildpack-nodejs-grunt.git
有关如何使用grunt部署到Heroku的更多说明,请访问:https://medium.com/@3runjo/how-to-deploy-a-grunt-project-on-heroku-c227cb1ddc56
我意识到这不是一个完整的答案,但应该给你足够的线索来解决你的问题.