heroku 上部署node.js的几个注意点

来源:互联网 发布:淘宝模特拍摄大牌风 编辑:程序博客网 时间:2024/06/04 19:55

由于课程设计需要把网站发布到heroku上,今天试着把以前用angularJs开发的一个前端应用部署上去,在部署的过程中遇到几个注意点,在此进行记录。

package.json中需要指定node的版本

本地开发node运行时是通过系统环境变量找到的,因此不需指定版本,但部署到heroku上时,由于heroku需要根据版本号去下载对应版本的nodejs,因此必须指明node的版本,个人感觉可能heroku的部署原理类似于Docker,官方的文档在Heroku Node.js Support
package.json中的配置如下:

"engines": {    "node": "4.4.0",    "npm": "2.1.x"  //npm 的版本不需指明,可选    }, 

开发依赖项要放入dependencies中,如bower, http-server等

我在前端项目中用到了bower包管理器,主要管理一些前端框架,如Jquery,Bootstrap等,因此我的页面能够正常访问的前提是bower install能够正常执行,但由于我开发时将bower放在了package.json中的devDependecies中,因此在部署到heroku上后,它在npm install时默认忽略了devDependecies中的内容,包括bower,因此导致页面无法访问,配置如下:

"dependencies": {        "karma": "^0.13.21",        "karma-chrome-launcher": "^0.1.4",        "karma-firefox-launcher": "^0.1.3",        "karma-jasmine": "~0.1.0",        "protractor": "^2.1.0",        "http-server": "^0.9.0",        "tmp": "0.0.23",        "bower": "^1.3.1",        "shelljs": "^0.2.6"    },

官方文档在这里Troubleshooting Node.js Deploys

启动http服务器时,指定的端口应使用$PORT

$PORT应该是heroku指定的一个发布网页应用的端口,其他端口不可用
,官方的文档说明在这里Runtime Principles

0 0