【发布时间】:2021-09-20 01:35:58
【问题描述】:
我有一个 react + express 项目,我在其中进行服务器端渲染。我的文件夹结构是这样的
root
client
build
node_modules
public
src
package.json
node_modules
routes
server.js
package.json
我有两个 Heroku dynos app-dev 和 app-prod,我将 app-dev 用于开发,将 app-prod 用于生产,它们的环境已相应地设置为 dev 和 prod。我的 package.json 看起来像这样
{
"name": "name",
"version": "1.0.0",
"description": "",
"main": "server.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "node server",
"server": "nodemon server",
"client": "npm start --prefix client",
"build": "cd client/ && npm install && npm run build",
"dev": "concurrently \"npm run server\" \"npm run client\""
},
"author": "",
"license": "ISC",
"dependencies": {
"body-parser": "^1.18.3",
"chalk": "^4.1.1",
"concurrently": "^6.1.0",
"connect-mongo": "^3.2.0",
"cookie-parser": "^1.4.3",
"cookie-session": "^2.0.0-beta.3",
"cors": "^2.8.5",
"dotenv": "^10.0.0",
"express": "^4.16.4",
"express-session": "^1.15.6",
"express-validator": "^6.11.1",
"mongoose": "^5.4.1",
"mongoose-findorcreate": "^3.0.0",
"morgan": "^1.10.0",
"passport": "^0.4.0",
"passport-google-oauth": "^2.0.0",
"passport-google-oauth20": "^2.0.0",
"passport-twitter": "^1.0.4",
"redux-thunk": "^2.3.0",
"http-proxy-middleware": "^2.0.0"
}
}
现在我的 client/src 文件夹中有一个常量文件,其中包含这些
// Constants.js
const prod = {
url: {
SS_API_URL: 'https://prod.example.com',
},
keys:{
SS_CLIENT_ID: 'prodClientId',
SS_X_API_KEY: 'prodApiKey',
}
};
const dev = {
url: {
SS_API_URL: 'https://dev.example.com',
},
keys:{
SS_CLIENT_ID: 'devClientId',
SS_X_API_KEY: 'devApiKey',
}
};
export const config = process.env.NODE_ENV === 'development' ? dev : prod;
现在当我上传到 Heroku (app-dev) 并构建它时,它似乎使用 prod.example.com 而不是 dev.example.com API 端点。由于 NODE_ENV 是开发,我认为它会使用 SS_API_URL 来开发,但它会使用 SS_API_URL 来生产
【问题讨论】:
标签: node.js express heroku npm environment-variables