为开发和生产失败配置Angularjs-express应用程序

时间:2014-12-22 14:49:12

标签: angularjs node.js heroku

我的开发盒是我的本地机器。 angularjs前端对快速后端进行api调用,为此我将api路由和其他细节存储在配置文件中:

'use strict';
var env = process.env.NODE_ENV || 'development';

if (env === 'development') {

  exports.serverPort = 3000;
  exports.baseUrl = 'http://localhost';
  exports.apiPath = 'http://localhost:3000/';
  ...//database path
  .... // secret key etc
  ....

} else {

  exports.serverPort = process.env.PORT;
  exports.baseUrl = 'https://secret-ef-12.herokuapp.com';
  exports.apiPath = 'https://secret-ef-12.herokuapp.com:' + process.env.PORT + '/';
  ....    
}

我的开发框已将NODE_ENV设置为' development'。

在我的heroku帐户中,我将NODE_ENV设置为' production'。

在开发机器上工作正常。但是在heroku帐户(生产机器)上,应用程序无法获取生产值。

请注意,在部署到Heroku之后,我正在使用gulpfile重建代码。

 //a snippet from package.json 
 "scripts": {
    "start": "node server/server.js",
    "postinstall": "node node_modules/.bin/gulp build"
  },

重申: 在' git push heroku master'之后,heroku重建了我的应用程序。没有报告错误。 执行' heroku open'时,angularjs应用程序打开正常。但是,应用程序所做的所有数据库调用都会转到

http://localhost:3000 

而不是使用生产值。

我不明白为什么heroku平台上的angularJs应用程序没有提取生产值。

1 个答案:

答案 0 :(得分:0)

最终找到了问题和解决方案。 Browserify不读取节点环境变量。因此,上面的代码将始终返回“开发”。

我配置了我的构建文件(Gulpfile.js),以根据传递给它的标志生成开发或生产构建。

这意味着我的构建文件(Gulpfile.js)没有在环境中搜索它是否应该为dev或prod构建。

我的gulp文件现在配置为

gulp build --dev

gulp build --production

在将代码部署到Heroku之后,我将以下行放在package.json

  "postinstall": "node node_modules/.bin/gulp build --production"

现在这对我有用。它也让我更喜欢简单。