未使用require('dotenv')。config();

时间:2019-10-02 00:34:52

标签: node.js mongodb dotenv

在获取dotenv来获取我的.env文件时遇到麻烦

这是我的文件结构:

├── app.js
├── node_modules
│   └── ...
├── package.json
├── routes
│   └── index.js
└── start.js
│   
└── .env 

这是我的start.js:

require('dotenv').config();
console.log(process.env.MONGO_URI);
const mongoose = require('mongoose');


mongoose.connect(process.env.DATABASE, { useMongoClient: true });
mongoose.Promise = global.Promise;
mongoose.connection
  .on('connected', () => {
    console.log(`Mongoose connection open on ${process.env.DATABASE}`);
  })
  .on('error', (err) => {
    console.log(`Connection error: ${err.message}`);
  });

.env里面的内容如下:

mongodb+srv://username:password@livewelldb-aqoul.mongodb.net/test?retryWrites=true&w=majority

不幸的是,在运行我的node.js应用程序时,出现以下错误:

C:\Users\user\Desktop\project\node_modules\mongoose\lib\connection.js:520
    throw new MongooseError('The `uri` parameter to `openUri()` must be a ' +
    ^
MongooseError: The `uri` parameter to `openUri()` must be a string, got "undefined". Make sure the first parameter to `mongoose.connect()` or `mongoose.createConnection()` is a string.

之所以发生这种情况是因为dotenv出于某种原因似乎无法找到我的.env文件。当我运行console.log(process.env.MONGO_URI);时,我不确定。

不知道为什么。大多数遇到此问题的人都存在以下问题之一:

  • 他们不从根目录运行程序
  • 他们的.env不在他们的根目录中
  • .env的名称错误,例如“ config.env”
  • 他们的.env格式不是UTF-8格式

我没有任何这些问题。我不确定是什么原因造成的。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

在加载应用程序时在软件包中指定您的.dotenv文件名

require('dotenv').config({path: './.env'})

答案 1 :(得分:0)

请检查您的 .dotenv 文件名。

require('dotenv').config({path:'relative/path/to/your/.env'})