我在使用 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 字符串已被替换。我在生产中使用了正确的字符串。
答案 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 变量中的一个错字。