mongoose.connect() url参数必须是字符串类型



使用mongoose.connect()

时出现以下错误error: The "url" argument must be of type string. Received undefined {"data":{"code":"ERR_INVALID_ARG_TYPE"}}

我是这样使用它的:

const mongoose = require("mongoose");
const url = process.env.MONGODB_URL;
mongoose.connect(url, {
useNewUrlParser: true,
});

我也试过不使用环境变量:

const mongoose = require("mongoose");
mongoose.connect("mongodb+srv://username:password@myurl.com/etc", {
useNewUrlParser: true,
});

堆栈跟踪如下所示:

43|api-dev | TypeError [ERR_INVALID_ARG_TYPE]: The "url" argument must be of type string. Received undefined
43|api-dev |     at validateString (internal/validators.js:124:11)
43|api-dev |     at Url.parse (url.js:160:3)
43|api-dev |     at Object.urlParse [as parse] (url.js:155:13)
43|api-dev |     at dispatchHttpRequest (/var/www/api-dev/node_modules/axios/lib/adapters/http.js:91:22)
43|api-dev |     at new Promise (<anonymous>)
43|api-dev |     at httpAdapter (/var/www/api-dev/node_modules/axios/lib/adapters/http.js:46:10)
43|api-dev |     at dispatchRequest (/var/www/api-dev/node_modules/axios/lib/core/dispatchRequest.js:52:10)
43|api-dev |     at processTicksAndRejections (internal/process/task_queues.js:93:5)

这似乎是一个axios错误,但我没有直接调用axios

它在我的本地环境中工作得很好,包括env变量和原始字符串,但在我的服务器上不行。想法吗?

*本例中的url字符串已被替换。我在生产中使用了正确的字符串。

问题是因为您忘记在Mongoose连接字符串中添加双引号。

答案应该是:

const mongoose = require("mongoose");
mongoose.connect("mongodb+srv://username:password@myurl.com/etc", {
useNewUrlParser: true,
});

带双引号

这根本不是关于mongo.connect()的,而是我的程序的另一部分的env变量中的一个错别字。

最新更新