簡體   English   中英

無法訪問配置變量

[英]unable to access config variables

服務器.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);
  });
});

數據庫.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;

配置.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()的第一個參數是一個字符串。 由於未處理的 promise 拒絕而關閉服務器

我該如何解決這個問題?

不要在代碼中設置這些path: "backend/config/config.env"它取決於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

暫無
暫無

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

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