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

MERN栈后端启动报ERR_MODULE_NOT_FOUND错误,求技术帮助

MERN栈后端开发:nodemon启动时出现ERR_MODULE_NOT_FOUND错误

问题详情

学习MERN栈后端开发时,使用nodemon启动服务器触发ERR_MODULE_NOT_FOUND错误,提示无法从C:\Users\charl\Desktop\movie-reviews\backend\index.js找到导入的C:\Users\charl\Desktop\movie-reviews\server.js模块。已尝试在package.json中添加启动命令,但问题未解决,请求排查。

错误信息

node:internal/errors:491
    ErrorCaptureStackTrace(err);
    ^

Error [ERR_MODULE_NOT_FOUND]: Cannot find module 'C:\Users\charl\Desktop\movie-reviews\server.js' imported from C:\Users\charl\Desktop\movie-reviews\backend\index.js
at new NodeError (node:internal/errors:400:5)
at finalizeResolution (node:internal/modules/esm/resolve:326:11)
at moduleResolve (node:internal/modules/esm/resolve:945:10)
at defaultResolve (node:internal/modules/esm/resolve:1153:11)
at nextResolve (node:internal/modules/esm/loader:163:28)
at ESMLoader.resolve (node:internal/modules/esm/loader:842:30)
at ESMLoader.getModuleJob (node:internal/modules/esm/loader:424:18)
at ModuleWrap.<anonymous> (node:internal/modules/esm/module_job:77:40)
at link (node:internal/modules/esm/module_job:76:36) {
code: 'ERR_MODULE_NOT_FOUND'

相关代码文件

index.js(路径:backend/index.js)

import app from '../server.js'
import mongodb from "mongodb"
import dotenv from "dotenv"

async function main(){

    dotenv.config()
    const client = new mongodb.MongoClient(process.env.MOVIEREVIEWS_DB_URI)

    const port = process.env.PORT || 8000

    try{
        // 连接MongoDB集群
        await client.connect()
        app.listen(port,()=>{
            console.log("server is running on port: " + port);
        })
    } catch (e){
        console.error(e);
        process.exit(1)
    }
}

main().catch(console.error);

server.js(路径:server.js)

import express from 'express'
import cors from 'cors'
import movies from './api/movies.rout.js'
const app = express()

app.use(cors())
app.use(express.json())
app.use("/api/v1/movies",movies)
app.use('*', (req,res)=>{
    res.status(404).json({error:"not found"})
})

export default app

movies.route.js(路径:api/movies.route.js)

import express from 'express'

const router = express.Router() // 获取Express路由实例
router.route('/').get((req,res) => res.send('hello world'))

export default router

connection.env

MOVIEREVIEWS_DB_URI=database
MOVIEREVIEWS=sample_mflix
PORT=500

已尝试的解决方案

在package.json中添加启动命令:

"start": "nodemon --experimental-modules --es-module-specifier-resolution=node index.js"


排查与解决方法

  1. 修正启动命令的文件路径
    当前启动命令直接指向index.js,但该文件实际位于backend目录下,在项目根目录执行命令时,需要指定完整路径:

    "start": "nodemon --experimental-modules --es-module-specifier-resolution=node backend/index.js"
    
  2. 添加ES模块标识
    在项目根目录的package.json中添加"type": "module"字段,让Node.js默认将所有.js文件当作ES模块处理,避免解析冲突:

    {
      "type": "module",
      "scripts": {
        "start": "nodemon backend/index.js"
      }
    }
    

    添加后可省略--experimental-modules参数(Node.js 14.13.0+已默认支持ES模块)。

  3. 验证文件路径匹配度
    确认server.js确实存在于项目根目录(即movie-reviews文件夹下),与backend/index.js中../server.js的相对路径指向一致;同时检查文件名大小写(Windows系统不区分大小写,但Node.js模块解析可能严格区分)。

  4. 修正dotenv配置路径
    当前dotenv.config()未指定配置文件路径,若connection.env不在backend目录下,需传入正确路径:

    dotenv.config({ path: '../connection.env' })
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 08:31:07