mongoose.connect(),第一个参数应该是字符串,接收未定义
mongoose.connect(), first argument should be String, received undefined
我正在尝试为测试目的设置测试数据库,但它不起作用。
我正在尝试使用 mongoose 连接到 MongoDB,但在连接错误中发现问题显示:
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.
at new MongooseError (/media/abhigyan/ABHI/programming/node js/Practice/On my Own/Todo/node_modules/mongoose/lib/error/mongooseError.js:11:11)
at NativeConnection.Connection.openUri (/media/abhigyan/ABHI/programming/node js/Practice/On my Own/Todo/node_modules/mongoose/lib/connection.js:424:11)
at Mongoose.connect (/media/abhigyan/ABHI/programming/node js/Practice/On my Own/Todo/node_modules/mongoose/lib/index.js:230:15)
at Object.<anonymous> (/media/abhigyan/ABHI/programming/node js/Practice/On my Own/Todo/server/db/mongoose.js:5:10)
at Module._compile (module.js:635:30)
at Object.Module._extensions..js (module.js:646:10)
at Module.load (module.js:554:32)
at tryModuleLoad (module.js:497:12)
at Function.Module._load (module.js:489:3)
at Module.require (module.js:579:17)
at require (internal/module.js:11:18)
at Object.<anonymous> (/media/abhigyan/ABHI/programming/node js/Practice/On my Own/Todo/server/models/Todo.js:1:82)
at Module._compile (module.js:635:30)
at Object.Module._extensions..js (module.js:646:10)
at Module.load (module.js:554:32)
at tryModuleLoad (module.js:497:12)
at Function.Module._load (module.js:489:3)
at Module.require (module.js:579:17)
at require (internal/module.js:11:18)
at Object.<anonymous> (/media/abhigyan/ABHI/programming/node js/Practice/On my Own/Todo/server/tests/server.test.js:4:16)
at Module._compile (module.js:635:30)
at Object.Module._extensions..js (module.js:646:10)
at Module.load (module.js:554:32)
at tryModuleLoad (module.js:497:12)
at Function.Module._load (module.js:489:3)
at Module.require (module.js:579:17)
at require (internal/module.js:11:18)
at /media/abhigyan/ABHI/programming/node js/Practice/On my Own/Todo/node_modules/mocha/lib/mocha.js:250:27
at Array.forEach (<anonymous>)
at Mocha.loadFiles (/media/abhigyan/ABHI/programming/node js/Practice/On my Own/Todo/node_modules/mocha/lib/mocha.js:247:14)
at Mocha.run (/media/abhigyan/ABHI/programming/node js/Practice/On my Own/Todo/node_modules/mocha/lib/mocha.js:576:10)
at Object.<anonymous> (/media/abhigyan/ABHI/programming/node js/Practice/On my Own/Todo/node_modules/mocha/bin/_mocha:637:18)
at Module._compile (module.js:635:30)
at Object.Module._extensions..js (module.js:646:10)
at Module.load (module.js:554:32)
at tryModuleLoad (module.js:497:12)
at Function.Module._load (module.js:489:3)
at Function.Module.runMain (module.js:676:10)
at startup (bootstrap_node.js:187:16)
at bootstrap_node.js:608:3
error Command failed with exit code 1.
我正在传递一个有效的字符串,但它不起作用!
const mongoose = require('mongoose');
mongoose.Promise = global.Promise;
mongoose.connect(process.env.MONGODB_URI, err => {
if(err)
console.log(err);
}
);
module.exports = {
mongoose
};
这是 运行 mocha 的脚本:
export NODE_ENV='test' && mocha server/**/*.test.js
配置代码如下:
const config = require('./config.json');
const env = process.env.NODE_ENV.toString() || 'development';
if(env === 'test' || env === 'development') {
const envConfig = config[env];
Object.keys(envConfig).forEach(key => {
process.env[key] = envConfig[key];
});
};
console.log(env);
这是 config.json 文件:
{
"test": {
"PORT": 3000,
"MONGODB_URI": "mongodb://localhost:27017/TodoTest"
},
"development": {
"PORT": 3000,
"MONGODB_URI": "mongodb://localhost:27017/Todo"
}
}
感谢您的帮助!
我想你错过了导入 env
文件。
require('dotenv').config({ path: 'ENV_FILENAME' });
在 mongoose.connect() 方法中添加代码 { useNewUrlParser: true }
后,我也遇到了同样的问题。问题已解决。
mongoose.connect(config.DB,{ useNewUrlParser: true }));
我有一个类似的问题,已通过添加此代码片段解决。
mongoose.connect(config.DB,{ useMongoClient:true });
确保您的 .env 文件中定义了您正在使用的常量。
这就是解决了我的问题。编码愉快!
// Connect to MongoDB
mongoose.connect('mongodb://yourusername:yourpassword@ds121825.mlab.com:11025/yourmongodb', {useNewUrlParser: true});
mongoose.connection.once('open', function(){
console.log('Conection has been made!');
}).on('error', function(error){
console.log('Error is: ', error);
});
由于错误消息返回了 UNDEFINED uri 参数,.toString()
将不起作用。
您可以使用 String()
函数:String(your connection parameter)
.
另外,在if(env === 'test' || env === 'development')
中尽量不要使用(===),是严格相等。
改为尝试 if(env == 'test' || env == 'development')
。这是一个松散的平等。它不关心类型匹配,并将第二个操作数的类型转换为第一个操作数的类型。
我遇到了同样的问题,但后来我意识到我将 .env 文件保存为 .env.txt 导致了这个问题。我删除了该文件并创建了另一个末尾没有 .txt 的文件,一切正常。
希望对您有所帮助。
Dhiya Aljaradi
要从 .env 文件读取你必须安装 dotenv ( npm i dotenv / yarn add dotenv)
然后将其添加到您的文件之上。
const dotenv = require("dotenv");
dotenv.config();
MongooseError: openUri()
的 uri
参数必须是字符串,得到 "undefined"。确保 mongoose.connect()
或 mongoose.createConnection()
的第一个参数是一个字符串。
我运行遇到了同样的问题。
1. 我将我的 ATLAS_URI ID 保存到一个名为 .env 的文件中
2. 我的 .env 文件在 错误的目录 中,这就是问题的原因
3. 解决方案:我使用 "ls -a" 命令来确保我的 .env 文件与我的服务器位于同一位置
我有同样的错误,对我来说这是因为我试图在 globalSetup
中使用环境变量,其中有用于启动数据库连接的文件.. mongoose.connect(global.__MONGO_URI__
显然,globalSetup
中的环境变量尚未初始化,所以我不得不将代码移到其他地方,或者移至 setupFilesAfterEnv
或使用 Async Test Environment
const db = process.env.MONGO || 'test'
mongoose.connect(db, {
useNewUrlParser: true,
useUnifiedTopology:true,
useCreateIndex: true
}).then(()=>{
console.log("conected to mongodb");
}).catch(error => {
console.log("mongo error",error);
})
只需更改环境
const db = process.env.MONGO || 'test'
如果您忘记了 import/require dotenv,那么您可以 运行 在 运行 使用 --require dotenv/config
node --require dotenv/config index.js // regular node command
// nodemon to restart application whenever a file gets changed
nodemon --require dotenv/config index.js
// integrate with babel-node if you're using latest JS features like import/export
nodemon --require dotenv/config index.js --exec babel-node
无需在代码库中要求 dotenv 和调用配置函数。享受吧!
我做错了什么是我创建了 js 文件来存储密钥:
module.export = {
MONGOURI : "Your Key"
}
并且从我的 app.js 中获取具有不同键名的键,例如
const {MongoUri} = require('./keys')
将 MongoUri 更改为 MONGOURI 后,它工作正常。
如果我们不想这样定义.env文件的路径,
require('dotenv').config({ path: 'ENV_FILENAME' });
我们可以将 .env 文件放在与主文件相同的位置,在我的例子中是 App.js。所以我们可以直接写
require('dotenv').config()
const conn = await mongoose.connect(process.env.MONGO_URI, {
useNewUrlParser: true,
useUnifiedTopology: true,
useCreateIndex: true
})
始终在放置 useUnifiedTopology:true
之前放置 useNewUrlParser:true
,然后放置其余部分。
我遇到了同样的错误,这个线程没有帮助...这是我的解决方案,很简单!我正在使用 express、mongo、mongoose 和 dotENV
文件 1 === db.js
import mongoose from 'mongoose';
const connectDB = async ()=>{
try{
const conn = await mongoose.connect(process.env.MONGO_URI,{
//must add in order to not get any error masseges:
useUnifiedTopology:true,
useNewUrlParser: true,
useCreateIndex: true
})
console.log(`mongo database is connected!!! ${conn.connection.host} `)
}catch(error){
console.error(`Error: ${error} `)
process.exit(1) //passing 1 - will exit the proccess with error
}
}
export default connectDB
文件 2=server.js
import express from 'express'
import dotenv from 'dotenv'
import connectDB from './config/db.js' // DB connection
import products from './data/products.js'
dotenv.config()
const PORT = process.env.PORT || 5000
const mode = process.env.NODE_ENV
const app = express()
connectDB() //this function connects us to the DB!!!
. . . more code…
> 解决方案:connectDB() 表达式必须在 dotenv.config() 表达式之后。
就是这样! :)
我遇到了同样的问题,这是我的解决方法:
process.env.MONGODB_URL 应该在一个字符串中。
看看
const mongoose = require('mongoose');
mongoose.Promise = global.Promise;
mongoose.connect('process.env.MONGODB_URI', err => {
if(err)
console.log(err);
}
);
module.exports = {
mongoose
};
我的 .env
文件被错误地命名为 .dotenv
。
将其更改为 .env
后一切正常
在服务器目录中,
-
npm install dotenv
在您的 server.js 中:
如果您在 package.json 文件中使用 "type":"module" 那么,
import dotenv from 'dotenv';
import mongoose from 'mongoose';
dotenv.config();
或者,
const mongoose = require('mongoose')
require('dotenv').config()
在服务器目录下添加一个.env文件,
PORT=5000
MONGO_URL= yourURL
在server.js,
const url = process.env.MONGO_URL
mongoose.connect(url, { useNewUrlParser: true, useUnifiedTopology: true })
.then(() => app.listen(PORT, () => console.log("Server up and running!")
.catch((error) => console.log(error.message)
mongoose.set('useFindAndModify', false)
我收到了这个错误信息,你必须在安装dotenv包后声明.env文件。如果你在安装包之前声明文件,变量将是未定义的
我有一个类似的问题,请确保您在“/”中有 .env(在您的 package.json 文件旁边)。如果不想在您的应用程序代码中要求和加载 dotenv 或者仍然您的服务器 运行 有问题:
node -r dotenv/config your_script.js
.
否则,如果包含环境变量的文件位于其他位置,则必须使用路径模块:
常用js:require('dotenv').config({ path: '/custom/path/to/.env' })
ES:dotenv.config({ path: '/custom/path/to/.env' })
使用后
要求(“dotenv”).config();或从“dotenv”导入dotenv;
dotenv.config();将您的 .env 文件放在与服务器文件相同的文件夹中
试试这个对我有用的方法。
mongoose.connect(`${process.env.MONGO_URL}`, {useNewUrlParser: true, useUnifiedTopology: true}, ()=>{
console.log("mongodb is connected")
});
有一个很小的错误你的 .env 文件应该存在于你的项目目录中。也许您的 .env 文件放在不同的文件夹中。检查您的 .env 文件位置
您可以检查您文件夹中的“.env”文件是否有正确的名称,否则将无法正常工作。
如果您将“.env”文件命名为其他名称,请更改它。
请尝试以下步骤
第 1 步 - 安装 dotenv 包
# with npm
npm install dotenv
# with Yarn
yarn add dotenv
第 2 步 - 创建一个新的 env 文件,例如 config.env
第 3 步 - 在 config.env 文件中写入以下代码
DATABASE = MONGO_URL
PORT = port_number
第 4 步 - 在您的主服务器文件中写入以下代码(在我的例子中是 index.js)
const dotenv = require("dotenv"); //require dotenv package
dotenv.config({ path: "./config.env" }); //import config.env file
const DB = process.env.DATABASE;
const Port = process.env.PORT;
mongoose
.connect(DB, {
usenewurlparser: true,
useunifiedtopology: true,
})
.then(() => {
console.log("Successfully connected ");
})
.catch((error) => {
console.log(`can not connect to database, ${error}`);
});
我遇到了同样的问题。我轻松解决了。
- 第一步:npm 安装 dotenv
- 第 2 步:要求('dotenv').config()
- 第 3 步:创建 .env 文件
- 第 4 步:将点 env (.env) 文件推入此代码 DB_USER = ********* 和 DB_PASS = *********
- 第 5 步:
const dbURL = mongodb+srv://${process.env.DB_USER}:${process.env.DB_PASS}@techbd71.5ewxj.mongodb.net/
输入
table 名字在这里?retryWrites=true&w=majority
mongoose.connect(dbURL, {useNewUrlParser: true, useUnifiedTopology: true})
.then(()=>console.log('DB Ok'))
.catch(err => console.log(err))
Also, make sure to call dotenv at the top of the code.
The following code gives you the above error as you mentioned above
// Connecting to DataBase
connectDB();
const dotenv = require('dotenv').config();
The Correct Way
const dotenv = require('dotenv').config();
// Connecting to DataBase
connectDB();
我正在尝试为测试目的设置测试数据库,但它不起作用。
我正在尝试使用 mongoose 连接到 MongoDB,但在连接错误中发现问题显示:
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.
at new MongooseError (/media/abhigyan/ABHI/programming/node js/Practice/On my Own/Todo/node_modules/mongoose/lib/error/mongooseError.js:11:11)
at NativeConnection.Connection.openUri (/media/abhigyan/ABHI/programming/node js/Practice/On my Own/Todo/node_modules/mongoose/lib/connection.js:424:11)
at Mongoose.connect (/media/abhigyan/ABHI/programming/node js/Practice/On my Own/Todo/node_modules/mongoose/lib/index.js:230:15)
at Object.<anonymous> (/media/abhigyan/ABHI/programming/node js/Practice/On my Own/Todo/server/db/mongoose.js:5:10)
at Module._compile (module.js:635:30)
at Object.Module._extensions..js (module.js:646:10)
at Module.load (module.js:554:32)
at tryModuleLoad (module.js:497:12)
at Function.Module._load (module.js:489:3)
at Module.require (module.js:579:17)
at require (internal/module.js:11:18)
at Object.<anonymous> (/media/abhigyan/ABHI/programming/node js/Practice/On my Own/Todo/server/models/Todo.js:1:82)
at Module._compile (module.js:635:30)
at Object.Module._extensions..js (module.js:646:10)
at Module.load (module.js:554:32)
at tryModuleLoad (module.js:497:12)
at Function.Module._load (module.js:489:3)
at Module.require (module.js:579:17)
at require (internal/module.js:11:18)
at Object.<anonymous> (/media/abhigyan/ABHI/programming/node js/Practice/On my Own/Todo/server/tests/server.test.js:4:16)
at Module._compile (module.js:635:30)
at Object.Module._extensions..js (module.js:646:10)
at Module.load (module.js:554:32)
at tryModuleLoad (module.js:497:12)
at Function.Module._load (module.js:489:3)
at Module.require (module.js:579:17)
at require (internal/module.js:11:18)
at /media/abhigyan/ABHI/programming/node js/Practice/On my Own/Todo/node_modules/mocha/lib/mocha.js:250:27
at Array.forEach (<anonymous>)
at Mocha.loadFiles (/media/abhigyan/ABHI/programming/node js/Practice/On my Own/Todo/node_modules/mocha/lib/mocha.js:247:14)
at Mocha.run (/media/abhigyan/ABHI/programming/node js/Practice/On my Own/Todo/node_modules/mocha/lib/mocha.js:576:10)
at Object.<anonymous> (/media/abhigyan/ABHI/programming/node js/Practice/On my Own/Todo/node_modules/mocha/bin/_mocha:637:18)
at Module._compile (module.js:635:30)
at Object.Module._extensions..js (module.js:646:10)
at Module.load (module.js:554:32)
at tryModuleLoad (module.js:497:12)
at Function.Module._load (module.js:489:3)
at Function.Module.runMain (module.js:676:10)
at startup (bootstrap_node.js:187:16)
at bootstrap_node.js:608:3
error Command failed with exit code 1.
我正在传递一个有效的字符串,但它不起作用!
const mongoose = require('mongoose');
mongoose.Promise = global.Promise;
mongoose.connect(process.env.MONGODB_URI, err => {
if(err)
console.log(err);
}
);
module.exports = {
mongoose
};
这是 运行 mocha 的脚本:
export NODE_ENV='test' && mocha server/**/*.test.js
配置代码如下:
const config = require('./config.json');
const env = process.env.NODE_ENV.toString() || 'development';
if(env === 'test' || env === 'development') {
const envConfig = config[env];
Object.keys(envConfig).forEach(key => {
process.env[key] = envConfig[key];
});
};
console.log(env);
这是 config.json 文件:
{
"test": {
"PORT": 3000,
"MONGODB_URI": "mongodb://localhost:27017/TodoTest"
},
"development": {
"PORT": 3000,
"MONGODB_URI": "mongodb://localhost:27017/Todo"
}
}
感谢您的帮助!
我想你错过了导入 env
文件。
require('dotenv').config({ path: 'ENV_FILENAME' });
在 mongoose.connect() 方法中添加代码 { useNewUrlParser: true }
后,我也遇到了同样的问题。问题已解决。
mongoose.connect(config.DB,{ useNewUrlParser: true }));
我有一个类似的问题,已通过添加此代码片段解决。
mongoose.connect(config.DB,{ useMongoClient:true });
确保您的 .env 文件中定义了您正在使用的常量。
这就是解决了我的问题。编码愉快!
// Connect to MongoDB
mongoose.connect('mongodb://yourusername:yourpassword@ds121825.mlab.com:11025/yourmongodb', {useNewUrlParser: true});
mongoose.connection.once('open', function(){
console.log('Conection has been made!');
}).on('error', function(error){
console.log('Error is: ', error);
});
由于错误消息返回了 UNDEFINED uri 参数,.toString()
将不起作用。
您可以使用 String()
函数:String(your connection parameter)
.
另外,在if(env === 'test' || env === 'development')
中尽量不要使用(===),是严格相等。
改为尝试 if(env == 'test' || env == 'development')
。这是一个松散的平等。它不关心类型匹配,并将第二个操作数的类型转换为第一个操作数的类型。
我遇到了同样的问题,但后来我意识到我将 .env 文件保存为 .env.txt 导致了这个问题。我删除了该文件并创建了另一个末尾没有 .txt 的文件,一切正常。
希望对您有所帮助。
Dhiya Aljaradi
要从 .env 文件读取你必须安装 dotenv ( npm i dotenv / yarn add dotenv) 然后将其添加到您的文件之上。
const dotenv = require("dotenv");
dotenv.config();
MongooseError: openUri()
的 uri
参数必须是字符串,得到 "undefined"。确保 mongoose.connect()
或 mongoose.createConnection()
的第一个参数是一个字符串。
我运行遇到了同样的问题。 1. 我将我的 ATLAS_URI ID 保存到一个名为 .env 的文件中 2. 我的 .env 文件在 错误的目录 中,这就是问题的原因 3. 解决方案:我使用 "ls -a" 命令来确保我的 .env 文件与我的服务器位于同一位置
我有同样的错误,对我来说这是因为我试图在 globalSetup
中使用环境变量,其中有用于启动数据库连接的文件.. mongoose.connect(global.__MONGO_URI__
显然,globalSetup
中的环境变量尚未初始化,所以我不得不将代码移到其他地方,或者移至 setupFilesAfterEnv
或使用 Async Test Environment
const db = process.env.MONGO || 'test'
mongoose.connect(db, {
useNewUrlParser: true,
useUnifiedTopology:true,
useCreateIndex: true
}).then(()=>{
console.log("conected to mongodb");
}).catch(error => {
console.log("mongo error",error);
})
只需更改环境
const db = process.env.MONGO || 'test'
如果您忘记了 import/require dotenv,那么您可以 运行 在 运行 使用 --require dotenv/config
node --require dotenv/config index.js // regular node command
// nodemon to restart application whenever a file gets changed
nodemon --require dotenv/config index.js
// integrate with babel-node if you're using latest JS features like import/export
nodemon --require dotenv/config index.js --exec babel-node
无需在代码库中要求 dotenv 和调用配置函数。享受吧!
我做错了什么是我创建了 js 文件来存储密钥:
module.export = {
MONGOURI : "Your Key"
}
并且从我的 app.js 中获取具有不同键名的键,例如
const {MongoUri} = require('./keys')
将 MongoUri 更改为 MONGOURI 后,它工作正常。
如果我们不想这样定义.env文件的路径,
require('dotenv').config({ path: 'ENV_FILENAME' });
我们可以将 .env 文件放在与主文件相同的位置,在我的例子中是 App.js。所以我们可以直接写
require('dotenv').config()
const conn = await mongoose.connect(process.env.MONGO_URI, {
useNewUrlParser: true,
useUnifiedTopology: true,
useCreateIndex: true
})
始终在放置 useUnifiedTopology:true
之前放置 useNewUrlParser:true
,然后放置其余部分。
我遇到了同样的错误,这个线程没有帮助...这是我的解决方案,很简单!我正在使用 express、mongo、mongoose 和 dotENV
文件 1 === db.js
import mongoose from 'mongoose';
const connectDB = async ()=>{
try{
const conn = await mongoose.connect(process.env.MONGO_URI,{
//must add in order to not get any error masseges:
useUnifiedTopology:true,
useNewUrlParser: true,
useCreateIndex: true
})
console.log(`mongo database is connected!!! ${conn.connection.host} `)
}catch(error){
console.error(`Error: ${error} `)
process.exit(1) //passing 1 - will exit the proccess with error
}
}
export default connectDB
文件 2=server.js
import express from 'express'
import dotenv from 'dotenv'
import connectDB from './config/db.js' // DB connection
import products from './data/products.js'
dotenv.config()
const PORT = process.env.PORT || 5000
const mode = process.env.NODE_ENV
const app = express()
connectDB() //this function connects us to the DB!!!
. . . more code…
> 解决方案:connectDB() 表达式必须在 dotenv.config() 表达式之后。 就是这样! :)
我遇到了同样的问题,这是我的解决方法: process.env.MONGODB_URL 应该在一个字符串中。 看看
const mongoose = require('mongoose');
mongoose.Promise = global.Promise;
mongoose.connect('process.env.MONGODB_URI', err => {
if(err)
console.log(err);
}
);
module.exports = {
mongoose
};
我的 .env
文件被错误地命名为 .dotenv
。
将其更改为 .env
后一切正常
在服务器目录中,
-
npm install dotenv
在您的 server.js 中: 如果您在 package.json 文件中使用 "type":"module" 那么,
import dotenv from 'dotenv'; import mongoose from 'mongoose'; dotenv.config();
或者,
const mongoose = require('mongoose') require('dotenv').config()
在服务器目录下添加一个.env文件,
PORT=5000 MONGO_URL= yourURL
在server.js,
const url = process.env.MONGO_URL mongoose.connect(url, { useNewUrlParser: true, useUnifiedTopology: true }) .then(() => app.listen(PORT, () => console.log("Server up and running!") .catch((error) => console.log(error.message) mongoose.set('useFindAndModify', false)
我收到了这个错误信息,你必须在安装dotenv包后声明.env文件。如果你在安装包之前声明文件,变量将是未定义的
我有一个类似的问题,请确保您在“/”中有 .env(在您的 package.json 文件旁边)。如果不想在您的应用程序代码中要求和加载 dotenv 或者仍然您的服务器 运行 有问题:
node -r dotenv/config your_script.js
.
否则,如果包含环境变量的文件位于其他位置,则必须使用路径模块:
常用js:require('dotenv').config({ path: '/custom/path/to/.env' })
ES:dotenv.config({ path: '/custom/path/to/.env' })
使用后 要求(“dotenv”).config();或从“dotenv”导入dotenv; dotenv.config();将您的 .env 文件放在与服务器文件相同的文件夹中
试试这个对我有用的方法。
mongoose.connect(`${process.env.MONGO_URL}`, {useNewUrlParser: true, useUnifiedTopology: true}, ()=>{
console.log("mongodb is connected")
});
有一个很小的错误你的 .env 文件应该存在于你的项目目录中。也许您的 .env 文件放在不同的文件夹中。检查您的 .env 文件位置
您可以检查您文件夹中的“.env”文件是否有正确的名称,否则将无法正常工作。 如果您将“.env”文件命名为其他名称,请更改它。
请尝试以下步骤
第 1 步 - 安装 dotenv 包
# with npm
npm install dotenv
# with Yarn
yarn add dotenv
第 2 步 - 创建一个新的 env 文件,例如 config.env
第 3 步 - 在 config.env 文件中写入以下代码
DATABASE = MONGO_URL
PORT = port_number
第 4 步 - 在您的主服务器文件中写入以下代码(在我的例子中是 index.js)
const dotenv = require("dotenv"); //require dotenv package
dotenv.config({ path: "./config.env" }); //import config.env file
const DB = process.env.DATABASE;
const Port = process.env.PORT;
mongoose
.connect(DB, {
usenewurlparser: true,
useunifiedtopology: true,
})
.then(() => {
console.log("Successfully connected ");
})
.catch((error) => {
console.log(`can not connect to database, ${error}`);
});
我遇到了同样的问题。我轻松解决了。
- 第一步:npm 安装 dotenv
- 第 2 步:要求('dotenv').config()
- 第 3 步:创建 .env 文件
- 第 4 步:将点 env (.env) 文件推入此代码 DB_USER = ********* 和 DB_PASS = *********
- 第 5 步:
const dbURL = mongodb+srv://${process.env.DB_USER}:${process.env.DB_PASS}@techbd71.5ewxj.mongodb.net/
输入
table 名字在这里?retryWrites=true&w=majority
mongoose.connect(dbURL, {useNewUrlParser: true, useUnifiedTopology: true})
.then(()=>console.log('DB Ok'))
.catch(err => console.log(err))
Also, make sure to call dotenv at the top of the code.
The following code gives you the above error as you mentioned above
// Connecting to DataBase
connectDB();
const dotenv = require('dotenv').config();
The Correct Way
const dotenv = require('dotenv').config();
// Connecting to DataBase
connectDB();