[英]how to set and consume environment variables in node.js
所以我的 TypeScript-node 項目中有一個 .env 文件。 它包含一個像這樣的會話變量:
SESSION_SECRET= EXAMPLEkeyHERE1
BIRD_STRIPE_KEY= TheseAreNotReAlKeYS
CIRC_STRIPE_KEY= XXXXXX1232abc
和導入使用:
import session = require('express-session'); const { SESSION_SECRET, PORT } = process.env;
我的 app.js 看起來像這樣:
if (!SESSION_SECRET) {
logger.error('No client secret. Set SESSION_SECRET environment variable.');
process.exit(1);
}
/**
* @description Create Express server.
*/
const app = express();
if (IS_DEVELOPMENT) {
/**
* @description Error Handler. Provides full stack - remove for production
*/
app.use(errorHandler());
}
/**
* @description Express configuration
*/
app.set('port', PORT || 3000);
app.use(
cors(),
compression(),
express.json(),
session({
secret: SESSION_SECRET,
resave: true,
saveUninitialized: false
})
);
/**
* @description Express routers
*/
const routers = {
api: express.Router(),
provider: express.Router()
};
routers.api.use([routers.provider]);
routers.provider.use('/provider', [routes.Bird, routes.Circ, routes.Lime, routes.Spin, routes.Tier]);
/**
* @description These line will add /api/v{version} route prefix in every api requests.
*/
app.use(`/api/v${API_CONFIG.versions.v1}`, routers.api);
/**
* @description These lines are including error404 exported module and it will get called when routes not found.
*/
app.use([middleware.Error404]);
/**
* @var server
* @description Start Express server.
*/
app.listen(app.get('port'), () => {
console.log('App is running at http://localhost:%d in %s mode', app.get('port'), app.get('env'));
console.log('Press CTRL-C to stop\n');
});
當我點擊npm start
我收到此錯誤:
> @ruler-mobility/ruler@1.0.0 serve /Users/macbook/Desktop/develop/rails-projects/ruler
> node src/app.js
error: No client secret. Set SESSION_SECRET environment variable. {"service":"user-service"}
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! @ruler-mobility/ruler@1.0.0 serve: `node src/app.js`
npm ERR! Exit status 1
所以你可以看到錯誤是從代碼中的第一個 if 語句記錄的。 它也可能在快速配置下失敗。
我已經嘗試設置SESSION_SECRET
作為字符串SESSION_SECRET= "EXAMPLEkeyHERE1"
在我.ENV文件,但它並沒有區別。 誰能告訴我我在這里做錯了什么?
我不清楚您的問題是讀取配置文件還是訪問環境變量。
為了訪問環境變量,您只需要使用process.env.VARNAME
。 這假設環境變量已正確設置,例如
> SESSION_SECRET="EXAMPLEkeyHERE1" node src/app.js
但是,如果你想要把你的配置文件,您可以使用一個.json
您的文件require
或使用庫管理的配置,像confinode ,這將搜索,加載和分析文件給你。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.