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

由于课程设计需要把网站发布到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

你可能感兴趣的:(node-js)