簡體   English   中英

如何在 node.js 中設置和使用環境變量

[英]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文件,但它並沒有區別。 誰能告訴我我在這里做錯了什么?

您可以使用dotenv加載環境變量:

npm install dotenv -D

然后盡快在您的腳本中:

require('dotenv').config()

我不清楚您的問題是讀取配置文件還是訪問環境變量。

為了訪問環境變量,您只需要使用process.env.VARNAME 這假設環境變量已正確設置,例如

> SESSION_SECRET="EXAMPLEkeyHERE1" node src/app.js

但是,如果你想要把你的配置文件,您可以使用一個.json您的文件require或使用庫管理的配置,像confinode ,這將搜索,加載和分析文件給你。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM