带有 dotenv 和 nodejs 的未定义 process.env 变量

tho*_*asA 5 javascript environment-variables node.js npm

我的 dotenv 包有问题。

我的应用程序文件夹:

 |_app_folder
      |_app.js
      |_password.env
      |_package.json
Run Code Online (Sandbox Code Playgroud)

我当然安装了 dotenv,但是当我尝试记录 process.env 变量时,结果总是未定义,请您帮帮我吗?

密码.env

//password.env 
CLIENT_ID=xxxxxxxx
Run Code Online (Sandbox Code Playgroud)

应用程序.js

//app.js
const express = require('express');
const app = express();
const Twig = require("twig");

//Require dotenv
require('dotenv').config();

// Setting the Twig options
app.set("twig options", {
    allow_async: true, 
    strict_variables: false
});

app.get('/', function (req, res) {
  //Trying to log it
  console.log(process.env.CLIENT_ID);
  //
  res.render('index.twig', {
    date : new Date().toString()
  });
});

app.get('/instagram',function(req,res){
  // Building the URL
  let url = 'https://api.instagram.com/oauth/authorize/?client_id=';
  // Redirect to instagram for oauth 
  res.redirect(url);
})

app.listen(3000, function () {
  console.log('Running');
})
Run Code Online (Sandbox Code Playgroud)

感谢您的时间。

Pat*_*eck 15

默认情况下,dotenv 包仅加载名为的文件,.env如果要加载另一个文件,则需要指定路径

require("dotenv").config({ path: "path/to/file" })
Run Code Online (Sandbox Code Playgroud)

资源:

https://www.npmjs.com/package/dotenv


Gau*_*rma 5

当使用import而不是require时。-

您可以使用 -r(必需)来预加载 dotenv。您不需要在应用程序代码中要求和加载 dotenv。

 $ node -r dotenv/config app.js
Run Code Online (Sandbox Code Playgroud)