我的开发盒是我的本地机器。 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应用程序没有提取生产值。
答案 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"
现在这对我有用。它也让我更喜欢简单。