无法使用节点到数据库运行 MongoDB Atlas URL 的脚本

Posted

技术标签:

【中文标题】无法使用节点到数据库运行 MongoDB Atlas URL 的脚本【英文标题】:Can't run script of MongoDB Atlas URL using node to database 【发布时间】:2021-10-14 08:21:13 【问题描述】:

我目前正在关注 MDN 教程 Express Local Library Part 3。到目前为止,我已经正确地完成了所有我所知道的事情。我创建了一个数据库,然后使用 MongoDB Atlas 创建了一个集群,现在我尝试通过命令 node populatedb <my MongoDB Atlas URL here> 从文件 populatedb.js 上传我的数据,但它根本不起作用。我已经用正确的 URL 将它链接到 apps.js 文件(或者我认为是这样)。

我在控制台中返回了这个:

___________-MacBook-Air express-locallibrary-tutorial % node populatedb 'mongodb+srv://_________:_______________@cluster0.mhzo6.mongodb.net/local_library?retryWrites=true&w=majority'
internal/modules/cjs/loader.js:905
  throw err;
  ^

Error: Cannot find module '/Users/________/Desktop/express-locallibrary-tutorial/populatedb'
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:902:15)
    at Function.Module._load (internal/modules/cjs/loader.js:746:27)
    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:76:12)
    at internal/main/run_main_module.js:17:47 
  code: 'MODULE_NOT_FOUND',
  requireStack: []

我什至删除了我的数据库、集群、组织和所有内容,并将它们重新制作成完全相同,但仍然无济于事。

【问题讨论】:

好吧,Node.js 认为它​​在目录express-locallibrary-tutorial/ 中找不到文件populatedb。您确定这是要运行的正确文件吗?扩展很重要。 我很确定,我只是按照教程所说的那样输入所有内容,这就是为什么我很困惑为什么找不到路径。 node script.js arg1 argN — 将使 Node.js 解释器运行 script.js 文件并将 arg1argN 作为命令行参数传递给脚本。我看到你缺少.js 后缀。 嗯,我刚刚运行了填充 b.js,url 后跟单引号,并引发了相同的错误。该教程将其遗漏了,所以我也这样做了。这可能与我的集群有关吗?这是我开始学习编码以来第一次链接到数据库 只是不让我连接,我已尝试重命名和删除文件。 【参考方案1】:

答案如下:

[对于那些被本教程难倒的人,这很可能是原因!]

教程很容易让人误解,并在根目录中创建了一个与根目录同名的辅助文件夹...[或者更可能是我们仍然是初学者,很容易被误解并制作这个简单的错误。] 在教程 2“创建项目”中创建初始 express 项目 https://developer.mozilla.org/en-US/docs/Learn/Server-side/Express_Nodejs/skeleton_website 时,我不小心犯了一个简单的错误,即在 VS 代码中创建自己的 express-locallibrary-tutorial 文件夹/项目,然后运行所有 cmds集成终端而不是外部终端。这就是造成双文件夹的原因。

我很容易解决这个问题,只需确保在运行 node/nodemon 时我位于正确的文件夹中,并确保所有路由的路径正确,只是为了“掩盖”我认为没什么大不了的错误...这导致我不得不丢弃我的整个项目。我实际上已经完成了本教程,但是一旦将它启动到 Heroku,我很快意识到尝试修复所有内容并最好从头开始重新启动它是不值得的,因为 Heroku 只能从 /root/ 运行脚本它应该[至少到目前为止,因为这个初学者/菜鸟一直在排除故障!]

所以要小心这个简单的错误!如果您也这样做了并且早早发现了它,那么重新启动绝对值得头疼,因为从长远来看它会对您有所帮助,并且是一个简单错误的好教训,或者它是给我的!

【讨论】:

以上是关于无法使用节点到数据库运行 MongoDB Atlas URL 的脚本的主要内容,如果未能解决你的问题,请参考以下文章

使用节点 js 进行 Mongodb 复制

无法使用 express API 和节点 JS(Angular 4)将数据发布到 mongodb

无法使节点j在端口3000上运行

节点/快速应用程序无法使用mongoose连接到Mongodb Atlas

在将其发送到视图(节点 js)之前,无法更改路由中 MongoDB/MongooseJS 的结果

Serilog:无法使用 MongoDb 接收器登录到 MongoDb