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

时间:2021-03-04 00:54:27

标签: mongodb express mongoose axios

我在使用 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 字符串已被替换。我在生产中使用了正确的字符串。

2 个答案:

答案 0 :(得分:0)

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

答案应该是:

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

用双引号。

答案 1 :(得分:0)

结果证明这根本不是关于 package utils import ( "os/exec" ) //CloneRepo clones a repo lol func CloneRepo(args []string) { //repo URL repo := args[0] //verify that is an actual github repo URL //Clones Repo exec.Command("git", "clone", repo).Run() } ,而是我程序另一部分的 env 变量中的一个错字。