运行jest内存泄漏排查脚本时触发Powershell语法错误求助
问题根因
你执行命令时传入的./node_modules/.bin/jest.ps1是Windows PowerShell专用的引导脚本,无法被Node.js直接识别解析,Node.js只能运行JavaScript格式的代码文件,所以才会抛出PowerShell语法相关的语法错误。
解决方案
方案1:跨平台通用方案(推荐)
直接调用jest的原生JavaScript入口文件执行,所有操作系统都适用,命令如下:
node --expose-gc ./node_modules/jest/bin/jest.js --runInBand --logHeapUsage
方案2:Windows PowerShell环境专用方案
如果你坚持使用.bin目录下的ps1脚本,需要通过PowerShell直接调用,同时通过NODE_OPTIONS环境变量传入Node.js的启动参数:
$env:NODE_OPTIONS="--expose-gc" ./node_modules/.bin/jest.ps1 --runInBand --logHeapUsage
方案3:封装为npm脚本复用
可以在项目package.json的scripts字段中添加专用命令,避免每次手动输入长指令:
{ "scripts": { "test:mem-check": "node --expose-gc ./node_modules/jest/bin/jest.js --runInBand --logHeapUsage" } }
之后直接执行对应包管理器的命令即可:
- npm:
npm run test:mem-check - yarn:
yarn test:mem-check - pnpm:
pnpm run test:mem-check
内容的提问来源于stack exchange,提问作者Igino Boffa
相关产品推荐
相关产品推荐

