VSCode终端npm run build报错是PowerShell执行策略拦截,非脚本错误;运行set-ExecutionPolicy RemoteSigned -Scope CurrentUser即可解决,CMD正常因不受该策略限制。

终端能跑 node -v,但 npm run build 报错或卡住
根本不是脚本写错了,而是当前 shell 环境没加载完整 Node/npm 上下文 —— 尤其在 Windows + PowerShell 组合下,npm 脚本常因执行策略、PATH 分隔、或 npm 自身 registry 解析行为异常而失败。
-
npm run build在 CMD 里正常,在 VSCode 终端报nodemon : 无法加载文件…在此系统上禁止运行脚本:这是 PowerShell 执行策略拦截,不是 npm 问题;运行set-ExecutionPolicy RemoteSigned -Scope CurrentUser(无需管理员权限)即可 - 脚本执行到
webpack或rollup就卡住几秒再报getaddrinfo ENOTFOUND registry.npmjs.org:说明离线环境仍尝试 DNS 解析;加启动参数--no-dns --dns-result-order=ipv4first(Node 20.10+),或设环境变量NO_PROXY=* -
npm run build报Cannot find module 'xxx',但node index.js没问题:检查 package.json 中"type": "module"是否与脚本语法(importvsrequire)匹配;不匹配时,npm script 默认用 CommonJS 模式加载,ESM 文件会直接崩
launch.json 配置 webpack 构建脚本却断点不命中
VSCode 调试器默认不介入 npm script 的 shell 封装层,直接配 "program": "npm" 是无效的 —— 它只会启动 npm 进程,而不是你真正想调试的 webpack 入口。
使用一条命令部署ProbeChain Rydberg测试网代理节点。自动注册为Agent(NodeType=1),免gas,支持macOS/Linux/Windows。触发词:/r
- 必须把构建命令“降级”为原始 Node 进程:例如把
npm run build拆成node ./node_modules/webpack/bin/webpack.js --config webpack.config.js -
launch.json中显式指定"runtimeExecutable": "node",并用"runtimeArgs"传参数,不要用"program"指向 shell 脚本(如npm.cmd) - Webpack 插件断点打在
apply(compiler)开头,loader 断点打在函数体内部;若 loader 用了子进程(如babel-loader的fork: true),需临时关掉 fork 或换ts-loader - 确保
webpack.config.js路径正确:Windows 下${workspaceFolder}返回的是C:project,但 Webpack 内部路径处理统一用/,硬编码路径建议用正斜杠或双反斜杠
非目标系统(如 Windows)运行原本为 macOS/Linux 设计的打包脚本
常见于跨平台 CI 脚本或开源项目中,package.json 里的 scripts 直接用了 bash 特有语法(&&、$NODE_ENV、rm -rf),在 Windows PowerShell/CMD 下直接失效。
- 避免在 scripts 中写
rm -rf dist && webpack:改用 cross-platform 工具,比如npx rimraf dist && webpack(rimraf 替代rm -rf) - 环境变量引用别写
$NODE_ENV:PowerShell 用$env:NODE_ENV,CMD 用%NODE_ENV%;统一用cross-env NODE_ENV=production webpack - 路径拼接出错(如
./src/index.js在 Windows 下被解析为.\src\index.js导致 resolve 失败):Webpack 配置里entry和resolve.alias建议全用正斜杠,或用path.join(__dirname, 'src', 'index.js') - 某些 CLI 工具(如
prettier、eslint)的 bin 脚本在 Windows 下是.cmd文件,但 npm script 默认调用的是 Unix 风格入口;加--no-optional或显式调用prettier.cmd可绕过
离线环境运行打包脚本时 npm install --offline 仍失败
--offline 不等于“完全不联网”,它只跳过远程 registry 请求,但仍会读本地缓存、校验 integrity、解析 lockfile —— 缓存缺失或 lockfile 里含未缓存版本,就会报 No matching version found。
- 先确认
npm config get registry输出的是离线镜像地址(如https://registry.npmmirror.com),不是https://registry.npmjs.org - 清空缓存:
npm cache clean --force,删掉node_modules和package-lock.json - 提前在联网机器运行
npm pack <pkg>@x.y.z下载 tarball,复制到离线机的~/.npm/_cacache/content-v2/对应哈希目录下 - 关键一步:运行
npm install --offline --no-audit --no-fund,禁用所有可能触发网络请求的子命令
where node 有输出,npm run 仍可能用错版本。验证必须落到具体命令:开新终端 → node -v → npm config get prefix → npm run build,缺一不可。

















