You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

加载引入Mongoose的文件后Node陷入循环的原因排查

Node REPL加载Mongoose文件时循环打印的解决方法

当你在Node REPL中使用.load .index.js命令时出现循环打印const mongoose = require('mongoose');的问题,主要是因为REPL的.load命令在处理包含异步连接逻辑的文件时行为异常,加上课程内容可能基于旧版Node,和当前版本不兼容。

以下是几个可行的解决办法:

  • 改用REPL启动参数加载文件
    直接用node -r ./index.js命令启动REPL,这个命令会先加载你的index.js文件并执行代码,然后进入REPL环境,你可以直接使用文件中定义的Movie模型等变量,不会出现循环打印的问题。

  • 直接运行文件而非加载到REPL
    如果不需要进入REPL,只是想验证数据库连接是否成功,直接在终端执行node index.js即可,终端会输出连接成功或错误信息。

  • 修改文件方便REPL导入
    在你的代码末尾添加一行module.exports = { Movie };,然后在REPL中用const { Movie } = require('./index.js')导入,这样可以避免.load命令带来的问题。

你的代码本身没有语法错误,调整加载方式就能解决问题,修改后的代码示例:

const mongoose = require('mongoose');
mongoose.set('strictQuery', false);
mongoose.connect('mongodb://127.0.0.1:27017/movieApp')
.then(() => {
    console.log("connection open!");
})
.catch(err => {
    console.log("oh no, error!");
    console.log(err);
})

const movieSchema = new mongoose.Schema( {
    title: String,
    year: Number,
    score: Number,
    rating: String
})

const Movie = mongoose.model('Movie', movieSchema);
module.exports = { Movie }; // 添加这行方便在REPL中导入使用

内容的提问来源于stack exchange,提问作者Kyle

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 01:35:26