Node.js 18.04.0 无法找到 node:test 模块问题求助
我正在尝试使用node:test测试运行库,因此需要将Node.js版本更新至18.04+的非稳定版本,但运行时出现了模块未找到的错误,具体错误信息如下:
node:internal/modules/cjs/loader:949 throw err; ^ Error: Cannot find module '/home/project_name/out/test' at Module._resolveFilename (node:internal/modules/cjs/loader:946:15) at Module._load (node:internal/modules/cjs/loader:787:27) at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:77:12) at node:internal/main/run_main_module:17:47 { code: 'MODULE_NOT_FOUND', requireStack: [] }
解决node:test的MODULE_NOT_FOUND错误
这个错误核心是Node.js找不到你指定的/home/project_name/out/test模块文件,大概率是路径配置、编译输出或者调用方式的问题,我给你几个排查方向:
1. 先确认目标路径是否存在
首先手动检查/home/project_name/out/test这个目录下有没有对应的可执行文件(比如test.js或者index.js):
ls -la /home/project_name/out/test
如果目录是空的或者根本不存在:
- 如果你用的是TypeScript,检查
tsconfig.json里的outDir配置,确保编译后的文件输出到out目录; - 执行编译命令生成输出文件:
tsc - 如果是JavaScript项目,确认你的测试文件是否被正确复制到了
out/test目录。
2. 检查node:test的调用方式是否正确
node:test是Node.js内置的测试运行器,不需要手动指定编译后的单文件路径(除非你特意要运行单个编译后的测试文件)。正确的调用方式应该是直接指向测试文件所在的目录或匹配模式:
- 直接运行源码测试文件(如果是TS,需要用tsx/ts-node):
# JS项目 node --test test/**/*.test.js # TS项目 tsx --test test/**/*.test.ts - 如果你坚持运行编译后的文件,要确保路径指向具体的文件,而不是目录(除非目录下有
index.js):node --test out/test/**/*.test.js
3. 切换到Node.js 18稳定版试试
你用的是18.04+的非稳定版,而node:test在Node.js 18.0.0稳定版就已经正式可用了,非稳定版可能存在一些未修复的路径解析bug。可以用nvm切换到稳定版:
nvm install 18.17.0 nvm use 18.17.0
之后再重新运行测试,看错误是否消失。
4. 检查package.json的测试脚本配置
如果是通过npm test运行测试,确认scripts里的路径是否正确:
{ "scripts": { "test": "node --test out/test/**/*.test.js" } }
确保这里的路径和你实际的编译输出路径完全匹配,比如如果你的测试文件编译后在dist/test,就要把路径改成dist/test/**/*.test.js。
内容的提问来源于stack exchange,提问作者Kim B
相关产品推荐
相关产品推荐

