Windows下Node.js路径含空格导致模块找不到错误求助
Windows下含空格路径运行Nest.js npm脚本报错:MODULE_NOT_FOUND
问题场景
当项目路径包含空格(如E:\A B C\ny-project)时,执行npm start会触发模块找不到的错误;将路径改为无空格的E:\ABC\ny-project后,脚本可正常运行。
报错信息
E:\A B C\ny-project>npm start > ny-project@0.0.1 start > nest start node:internal/modules/cjs/loader:1051 throw err; ^ Error: Cannot find module 'E:\A' Require stack: - internal/preload at Module._resolveFilename (node:internal/modules/cjs/loader:1048:15) at Module._load (node:internal/modules/cjs/loader:901:27) at internalRequire (node:internal/modules/cjs/loader:166:19) at Module._preloadModules (node:internal/modules/cjs/loader:1420:5) at loadPreloadModules (node:internal/process/pre_execution:705:5) at setupUserModules (node:internal/process/pre_execution:170:3) at prepareExecution (node:internal/process/pre_execution:132:5) at prepareMainThreadExecution (node:internal/process/pre_execution:55:3) at node:internal/main/run_main_module:10:1 { code: 'MODULE_NOT_FOUND', requireStack: [ 'internal/preload' ] } Node.js v20.9.0
系统及依赖信息
系统版本
- Windows 10
- Node.js v20.9.0
- NPM v10.1.0
Nest相关版本
- Nest CLI v10.2.0
- platform-express v10.2.7
- schematics v10.0.2
- testing v10.2.7
- common v10.2.7
- core v10.2.7
解决思路
- 给npm脚本命令添加引号
修改package.json中的start脚本,将nest start用双引号包裹(外层双引号需转义):
"scripts": { "start": "\"nest start\"" }
保存后重新执行npm start即可。
使用Windows短路径格式
Windows对含空格的文件夹支持短名称,可通过dir /x命令查看目标文件夹的短名称(例如E:\A B C的短名称可能是E:\A~1),切换到短路径下运行项目。检查预加载模块配置
如果项目使用NODE_OPTIONS设置了预加载模块,确保路径被正确引号包裹。例如:
# 正确格式示例 NODE_OPTIONS="--require \"./preload scripts/preload.js\""
- 升级依赖版本
旧版本的Nest CLI或npm可能存在路径处理bug,尝试升级到最新稳定版:
# 升级Nest CLI npm install -g @nestjs/cli@latest # 升级npm npm install npm@latest -g
内容的提问来源于stack exchange,提问作者lCode
相关产品推荐
相关产品推荐

