Node启动报错:找不到module 'server/server/app.js'的解决方法
刚升级Node到最新稳定版后出现这种路径叠加的错误,大概率是模块解析逻辑变化或者运行上下文的问题,试试下面这些排查步骤:
确认当前工作目录
先执行pwd(Linux/macOS)或者cd(Windows命令行),确认你确实在server目录下。有时候不小心切换到了上层目录,就会导致Node错误地寻找server/server/app.js。如果当前目录不对,切换到正确的server目录再执行node app.js。检查package.json配置
如果项目里有package.json,先看看scripts里的启动命令是不是被误修改了。比如之前的"start": "node app.js"有没有变成"start": "node server/app.js"?另外,检查main字段是不是设置成了"server/app.js",这会让Node错误解析入口文件路径。排查app.js内的相对路径引用
打开app.js,看看里面有没有类似require('./server/xxx')的相对路径引用。在Node新版本中,相对路径的解析规则更严格,如果你已经在server目录下,这种写法会让Node去寻找server/server/xxx,把路径里多余的./server/改成./即可。清除Node模块缓存
Node升级后可能残留了旧的模块缓存,导致路径解析异常。可以试试用node --no-cache app.js启动,或者删除node_modules文件夹,重新执行npm install(如果项目有依赖的话),清除缓存后再启动试试。检查nodemon配置
报错里提到了nodemon,看看有没有nodemon.json配置文件,或者package.json里的nodemonConfig字段。检查exec命令是不是写成了node server/app.js,如果是,改成node app.js;另外看看watch字段有没有错误的路径配置。尝试绝对路径启动
用绝对路径执行启动命令,比如node /Users/xxx/Projects/your-project/server/app.js(替换成你自己的实际路径),如果能正常启动,说明是相对路径的解析问题,再回到前面的步骤排查具体原因。
内容的提问来源于stack exchange,提问作者richardthefourth

