【问题标题】:unable to access config variables无法访问配置变量
【发布时间】:2022-01-30 16:17:24
【问题描述】:

server.js

const dotenv = require("dotenv");
const connectDatabase = require("./config/database");
const cloudinary = require("cloudinary");

// Handling uncaught errors
process.on("uncaughtException", (err) => {
  console.log(`Error: $(err.message)`);
  console.log("Shutting down server due to uncaught exception");

  process.exit(1);
});

//config

dotenv.config({ path: "backend/config/config.env" });

//connecting to database
connectDatabase();
cloudinary.config({
  cloud_name: process.env.CLOUDINARY_NAME,
  api_key: process.env.CLOUDINARY_API_KEY,
  api_secret: process.env.CLOUDINARY_API_SECRET,
});

const server = app.listen(process.env.PORT, () => {
  console.log(`server is working on ${process.env.PORT}`);
});

//unhandled promise rejection

process.on("unhandledRejection", (err) => {
  console.log(`Error: ${err.message}`);
  console.log("Shutting down server due to unhandled promise rejection");
  server.close(() => {
    process.exit(1);
  });
});

databse.js

const { connect } = require("net");

const connectDatabase = () => {
  mongoose
    .connect(process.env.DB_URI, {
      useNewUrlParser: true,
      useUnifiedTopology: true,
    })
    .then((data) => {
      console.log(`Mongodb connected with server ${data.connection.host}`);
    });
};

module.exports = connectDatabase;

config.env

PORT=4000
DB_URI = "mongodb://localhost:27017/Ecommerce"

process.env.PORT 未定义而不是 4000。同样的问题也出现在 DB_URI 和其他 process.env 变量中。如果我写 4000 而不是 process.env.PORT 和 "mongodb://localhost:27017/Ecommerce" 而不是 process.env.DB_URI 它工作正常。以下是我终端中的错误。

服务器正在处理未定义 错误:openUri()uri 参数必须是字符串,得到“未定义”。确保mongoose.connect()mongoose.createConnection() 的第一个参数是字符串。 由于未处理的承诺拒绝而关闭服务器

我该如何解决这个问题?

【问题讨论】:

  • 尝试将文件名改为.env,而不是config.env,然后path: "backend/config/.env"

标签: javascript node.js mongodb mongoose


【解决方案1】:

不要将这些path: "backend/config/config.env" 的路径设置到您的代码中:it depends on the process.cwd(),它可能会根据您运行 node.js 命令的位置而改变。它根本不是确定性的。

改用server.js 的相对路径:

const path = require('path')

dotenv.config({ path: path.join(__dirname, "./config/config.env") });

我假设你的目录树是:

/backend
   - server.js
   - /config
       - config.env

【讨论】:

    猜你喜欢
    • 2014-03-08
    • 2018-07-12
    • 2023-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-13
    • 2014-06-04
    • 1970-01-01
    相关资源
    最近更新 更多