使用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变量中的一个错别字。