ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

npm在PowerShell中被禁止运行?从执行策略到编辑器终端彻底修复指南

npm在PowerShell中被禁止运行?从执行策略到编辑器终端彻底修复指南 最近一个月我已经在好几个技术群里看到同一张报错截图有人在 Trae 里打开内置终端敲下npm install结果 npm 直接被弹了回来提示什么“无法加载文件 D:\Program Files (x86)\nodejs\npm.ps1因为在此系统上禁止运行脚本”。换到 VS Code、再换到 Cursor症状一模一样甚至有人连系统自带的 PowerShell 里跑 npm 也是同样的待遇。这其实是 Windows 环境下非常典型的一个坑编辑器内置终端默认用的是 PowerShell而 PowerShell 默认不让跑.ps1脚本偏偏 Node.js 装完后给 npm 生成的入口文件里就有一个npm.ps1。这篇文章我会把这个问题的来龙去脉讲透给出从临时绕行到彻底修复的完整方案并顺带把编辑器终端与 npm 相关的几个高频雷区一起排掉适合所有在 Windows 上使用 VS Code 系编辑器做前端开发的人。1. 问题全景Trae/VS Code/Cursor内置终端跑npm的三大典型症状先说清楚问题长什么样因为很多人遇到报错后第一反应是去重装 Node.js结果装完发现一个样。这个坑和 Node.js 本身没关系问题出在“编辑器终端用什么 Shell 来执行命令”。1.1 症状一npm命令直接报“禁止运行脚本”这是最经典、出现频率最高的一个场景。具体报错类似下面这样npm : 无法加载文件 D:\Program Files (x86)\nodejs\npm.ps1因为在此系统上禁止运行脚本。有关详细信息请参阅 https://go.microsoft.com/fwlink/?LinkID135170 中的 about_Execution_Policies。所在位置 行:1 字符: 1 npm install ~~ CategoryInfo : NotSpecified: (C:\Program Files\nodejs\npm.ps1) FullyQualifiedErrorId : UnauthorizedAccess注意两个细节。第一报错信息里明确指向了npm.ps1说明你的 shell 是 PowerShell不是 CMD。第二路径里出现了D:\Program Files (x86)\nodejs\或C:\Program Files\nodejs\这类带空格和括号的路径这说明 Node.js 装的是官方默认路径的 MSI 安装包不是 nvm-windows 或绿色解压版。这两个细节在后面排查时都很有用。1.2 症状二编辑器里“找不到npm”另一种情况是不报禁止脚本而是直接告诉你npm 不是内部或外部命令或者npm: command not found。这种情况在 Trae、VS Code、Cursor 里都有可能出现但原因和刚才完全不同——不是执行策略的问题而是环境变量没读到。为什么编辑器终端会读不到环境变量因为很多编辑器是从桌面快捷方式启动的如果用户是在“环境变量改完之后没有重启系统/编辑器”新的 PATH 根本没有被加载进当前进程。还有一种是安装了 nvm-windows但当前没有激活 Node 版本系统 PATH 里压根没有 node 目录。1.3 症状三npm命令能执行但安装/构建总是失败第三种症状迷惑性最强npm 命令能跑npm -v也能打印版本但一执行npm install就卡住、超时、或者报 ERESOLVE、ETIMEDOUT 之类的错误。这类问题虽然不是“无法运行 npm”但在编辑器终端场景下也非常高频我见过太多人把这类问题也归因于“命令行坏了”。实际上这多半是 npm 镜像源没配置、或者 Node 版本和依赖树冲突导致的。这一个章节先把三大类症状列出来是因为很多人的实际症状是混合的在系统 CMD 里能跑 npm在编辑器终端里不能跑或者刚装完 Node 时能跑重装系统后再打开 VS Code 就废了。理解了这些差异下面拆解根因时才不会一头雾水。2. 根因拆解为什么偏偏是这几个编辑器的终端中招搞清楚“为什么”比单纯知道“怎么办”重要得多。我见过太多人把执行策略改成 Unrestricted 甚至直接删掉 npm.ps1前者有安全风险后者下次重装 Node 会再犯。这个坑背后其实是 Windows 命令解析、PowerShell 安全模型、编辑器终端机制三件事叠在一起。2.1 报错文本逐字拆解npm.ps1、Program Files (x86)、禁止运行脚本把那条经典报错拆开看每一段都有用。npm.ps1是 npm 官方在 Node.js 安装时生成的 PowerShell 脚本包装器它和npm.cmdCMD 批处理版、npmUnix 脚本放在同一个目录下。PowerShell 在解析命令时会按照优先级选择这个目录下的命令优先级排序里.ps1高于.cmd所以你在 PowerShell 里敲npm实际上执行的是npm.ps1这个脚本文件而不是npm.cmd。接下来是路径。带空格的路径之所以会出现在报错里是因为官方安装包默认就装到Program Files (x86)或Program Files下。有些教程会建议你去改 PATH、加引号但其实路径有空格本身不影响运行只要 PATH 配置正确就行。真正需要注意的是如果之前装过非官方路径的 Node然后又用官方安装包重新装了一次PATH 里可能会出现两个 node 目录先后顺序不同会直接影响你实际用的是哪个 npm。最后是“禁止运行脚本”。这句话不是 npm 的问题而是 PowerShell 在执行任何.ps1脚本之前会先检查 ExecutionPolicy执行策略。Windows 默认的 ExecutionPolicy 是 Restricted意思是允许单条命令、不允许跑脚本文件。npm.ps1 是一个脚本文件自然就被拦了。2.2 PowerShell执行策略ExecutionPolicy到底管什么很多人一看到“禁止运行脚本”就去百度搜到一堆让你执行Set-ExecutionPolicy RemoteSigned的命令但不太明白其中的含义。简单打个比方PowerShell 执行策略有点像小区的门禁系统决定哪些人可以进、哪些人不能进而不是给每个访客单独做背景调查。具体来说执行策略有几个作用域MachinePolicy、UserPolicy、Process、CurrentUser、LocalMachine。用Get-ExecutionPolicy -List可以看到从高到低的策略优先级。常见的策略值有策略值含义适合场景Restricted禁止运行任何脚本Windows 默认值最安全RemoteSigned本地脚本允许运行从网上下载的脚本必须有数字签名日常开发推荐AllSigned所有脚本都必须有签名安全要求极高的环境Unrestricted允许所有脚本运行但会提示风险临时使用不推荐长期设置Bypass全部放行不提示不拦截自动化部署场景注意 RemoteSigned 是很多开发者的推荐配置。它的逻辑是你自己写的、本地生成的.ps1脚本直接放行从互联网下载的脚本需要经过签名否则还是会拒绝。npm.ps1 是 Node.js 安装器在本地生成的脚本RemoteSigned 下完全可以正常运行不需要放宽到 Unrestricted。2.3 为什么cmd能跑而PowerShell不行.cmd与.ps1的文件类型之争这个差异是理解整个问题的钥匙。CMD 和 PowerShell 是两套完全不同的命令解释器。CMD 执行外部命令时会去找.cmd、.bat、.exe等扩展名的文件PowerShell 除了这些还会优先执行.ps1脚本。Node.js 安装包在 node 目录下一次性生成了 npm、npm.cmd、npm.ps1 三个文件为的就是让不同 shell 都能调用。所以你在系统 CMD 里敲npm命中的是npm.cmd不涉及脚本执行策略一切正常到了 PowerShell 或编辑器内置终端命中的是npm.ps1撞上执行策略限制就报错了。理解这一点还有个额外收益如果你在 PowerShell 里想临时绕过 npm.ps1 直接调 npm.cmd只要输入完整文件名npm.cmd加参数即可比如npm.cmd install。这个方法不用改任何策略适合紧急情况下先把手头事情做完后面再永绝后患。2.4 Trae/VS Code/Cursor默认终端为何都是PowerShell为什么偏偏是这三个编辑器踩坑因为它们都属于 VS Code 生态。VS Code 在 Windows 上默认的集成终端就是 PowerShellTrae 和 Cursor 又是基于 VS Code 做的 fork所以默认终端一脉相承全都默认用 PowerShell。加上国内很多用户装的 Windows 系统默认带 Windows PowerShell 5.1因此一打开终端、敲 npm 就中招。从这个角度看这个坑不是 AI 编辑器特有的问题老版 VS Code 一样会遇到。只是现在用 Trae、Cursor 的人多了大家发现“换了个 AI 编辑器还是躲不开这个报错”所以这个问题的讨论热度又上来了。另外 macOS 上不会有这个问题因为 macOS 默认 shell 是 zsh不存在.ps1脚本执行策略这也解释了为什么很多教程作者完全没提过这个坑——他们在 Mac 上写代码根本没机会遇到。3. 实操解决五套方案从临时到彻底理论部分讲清了下面直接给方案。我会按“紧急程度”和“彻底程度”两个维度排序你可以根据自己的情况选择。大多数人建议看方案二和方案三这两个方案一个是正面解决执行策略一个是干脆躲开 PowerShell任选其一都能让日常工作不再因为这个破事中断。3.1 方案一临时绕行单次命令放行执行策略如果你正在赶工不想为这个问题折腾最快速的做法有三种第一种在当前 PowerShell 里先执行一次Set-ExecutionPolicy -Scope Process Bypass注意-Scope Process表示只对当前这个 PowerShell 进程生效关掉窗口再开就恢复原样。它的作用相当于给当前终端窗口发了一个临时通行证不写入注册表、不改变系统设置非常适合应急。执行完后再敲npm install你会发现瞬间就通了。第二种不改变策略直接命中有.cmd后缀的文件npm.cmd install这招在 PowerShell 里有效原理前面说了是绕开.ps1直接执行批处理脚本。缺点是要每次手动多敲四个字符而且有些 npm 子命令比如npx没有对应的.cmd其实也有npx.cmd所以这套路基本通用但不优雅。第三种如果你是打开终端立刻就要用 npm且不想手敲任何额外命令可以直接在编辑器里切换终端执行方式。拿 VS Code/Cursor/Trae 举例打开终端视图后点终端面板右上角的下拉箭头选择Command Prompt新开一个 CMD 终端窗口再跑npm install。这其实已经接近方案三的思路了下文细说。3.2 方案二一劳永逸调整当前用户执行策略应急方案不持久改回默认的 Restricted 后下次打开 VS Code 还会头疼。推荐的做法是把当前用户的执行策略设置为 RemoteSigned。操作步骤如下按Win X选择“终端(管理员)”或“Windows PowerShell(管理员)”。在管理员终端里执行Set-ExecutionPolicy RemoteSigned -Scope CurrentUser系统会提示是否确认变更输入Y回车。执行Get-ExecutionPolicy确认结果输出应该是RemoteSigned。这里有几个细节值得展开。第一为什么用-Scope CurrentUser而不是针对 LocalMachine因为改 LocalMachine 需要管理员权限而 CurrentUser 只影响当前 Windows 账户不需要管理员权限副作用更小。如果你是公司电脑LocalMachine 可能被域策略锁定改 CurrentUser 是唯一可行路径。第二作用域之间有优先级如果机器上有更高级别的策略封锁比如组策略指定了 Restricted你改 CurrentUser 也不会生效。用Get-ExecutionPolicy -List查看各作用域的当前值如果 MachinePolicy 那一行显示 Restricted 且有值说明是公司组策略锁定这种情况下建议直接走方案三切 CMD别和策略硬刚。第三执行策略改完后不需要重启电脑但要重启一下编辑器让编辑器的终端进程重新继承新的策略值。VS Code/Cursor/Trae 都建议执行Developer: Reload Window或干脆完全退出重开。3.3 方案三更省事把编辑器默认终端直接切成CMD如果你不想和 PowerShell 的执行策略打交道可以把编辑器的默认终端直接改成 Command Prompt。这个操作方法在不同编辑器里有一点差异但整体思路一致。VS Code 和 Cursor 的操作按Ctrl Shift P输入Terminal: Select Default Profile回车后选择Command Prompt。设置完成后新开的终端就是 CMD。这里要注意修改默认终端配置只对新建终端生效之前已经开着的终端还是 PowerShell先关掉再重新打开。Trae 的操作Trae 的中文界面更友好但也有同样的入口。打开终端面板点击终端窗口右侧的下拉箭头或右上角的“”号旁边的下拉按钮选择“默认配置文件”然后把默认终端改成“命令提示符”。如果你的 Trae 版本菜单路径不一样可以按Ctrl Shift P搜索“终端”或“Terminal Profile”找到对应项。切到 CMD 后再运行npm install、npm run dev都不会再碰执行策略这道坎因为 CMD 里不存在.ps1脚本执行限制。这套方案的优势是零学习成本、不影响系统级配置缺点是一旦以后你需要用到 PowerShell 特性比如管道操作、对象操作在 CMD 里就力不从心了。我的建议是前端日常开发完全够用不必非得和 PowerShell 死磕。3.4 方案四排查PATH与Node.js安装路径前面说了还有一种情况是npm 不是内部或外部命令。这个要单独排查环境变量。按下Win Pause或右键“此电脑”选“属性”→“高级系统设置”→“环境变量”检查系统变量 PATH里有没有 Node.js 的安装路径。正常情况下用官方安装包安装 Node.js 后PATH 里会自动多出这么一行C:\Program Files\nodejs\如果你用的是Program Files (x86)路径那对应是D:\Program Files (x86)\nodejs\检查时注意几个容易踩的坑。第一PATH 里这一项必须是系统变量而不是用户变量否则某些需要管理员权限的编辑器进程可能读不到。第二如果 PATH 里已经有两三个 node 相关路径要确认哪个排在前面因为 Windows 按顺序查找命令。用where.exe node和where.exe npm可以直接查看当前生效的 node 和 npm 路径这是排查思路里最高效的一招。第三改完 PATH 之后已打开的编辑器终端不会自动刷新环境变量务必重启编辑器甚至重启电脑。补充一个场景很多人用 nvm-windows 管理 Node 版本装了新版本后nvm list明明正常编辑器里却找不到 npm。这是因为 nvm-windows 通过一个符号链接把当前版本映射到C:\Program Files\nodejs如果编辑器的终端不是通过正常登录会话启动的可能没识别到这个映射。解决方法是完全退出编辑器再重新打开不要用“重新加载窗口”有些情况下需要注销或者重启才能让 nvm 的软链接映射对当前会话生效。3.5 方案五重置Node环境并验证npm命令如果你已经试了以上所有方案还是不行那就要考虑 Node.js 安装本身出问题了。最干净的重置流程是完全卸载 Node.js在“控制面板-程序和功能”里卸载或用 Windows 设置里的应用卸载。手动清理残留目录删除C:\Program Files\nodejs或你当时的安装目录、C:\Users\你的用户名\AppData\Roaming\npm、C:\Users\你的用户名\AppData\Roaming\npm-cache。清理 PATH 中残留的 node 相关条目。重新下载 Node.js LTS 版本安装安装过程中勾选“Add to PATH”选项。安装完成后重启系统打开 CMD 执行node -v和npm -v验证。走完这套流程Node 环境就是“出厂状态”了。这时候再打开 Trae/VS Code/Cursor 跑 npm如果还报执行策略错误那就是前面说的策略问题按方案二处理即可。这套流程有同学可能会觉得“重装”太粗暴但说实话Windows 下 Node 环境被搞乱的案例非常多与其一点点 debug不如直接重置一次干净环境。重置后再搭配 nvm-windows 做版本管理以后能省心很多。4. 编辑器终端与npm的进阶雷区执行策略的坑解决了不代表编辑器终端里跑 npm 就天下太平了。下面几个雷区是我在实际项目里埋过、也看别人踩过的单拎出来说。4.1 npm镜像源与安装速度很多人在编辑器终端里执行npm install卡住第一反应是网络问题其实大概率是默认源的问题。npm 默认官方源在国外国内直连慢是常态。解决方式很简单在终端里执行npm config get registry如果返回https://registry.npmjs.org/建议换成国内镜像npm config set registry https://registry.npmmirror.com换完后再次执行npm config get registry确认生效。这样npm install的速度会明显提升原来动不动超时、卡半天的现象基本消失。这里有个小技巧如果你不想全局换源也可以只给单个项目配.npmrc文件在项目根目录创建.npmrc内容写registryhttps://registry.npmmirror.com这样只影响当前项目不影响全局环境。团队协作时可以把这行提交进仓库保证新同事克隆下来后安装依赖不会因为源的问题卡住。个人开发则建议全局设置省心。另外要注意npm 的缓存目录如果异常比如磁盘空间满了或者权限不对npm install也可能长时间无响应。执行npm cache verify检查缓存必要时用npm cache clean --force清掉。这个命令谨慎用它会强制删除所有缓存但副作用只是下次安装会在本地重新拉取不会影响项目代码。4.2 编辑器终端被conda/venv“劫持”这是第二个高频雷区。如果你电脑里装了 Anaconda、Miniconda或者项目用了 Python 虚拟环境VS Code/Cursor/Trae 的终端在启动时可能会自动激活 conda 的 base 环境或项目的 venv。终端提示符前面会多出一个(base)前缀。在这个状态下跑 npm有几种可能的问题。第一conda 环境会改变 PATH 的优先级某些情况下会影响 node 命令的查找。第二conda 每次激活环境时可能会执行一些脚本如果这些脚本里有对 PATH 的修改可能会盖掉你通过“环境变量”面板设置的路径。第三如果你在(base)环境里执行npm install项目里有些 postinstall 脚本会调用 Python此时用的可能是 conda 的 Python 而不是系统 Python导致安装结果不可思议地失败。排查方法是在编辑器终端里先执行echo $env:CONDA_DEFAULT_ENVPowerShell或echo %CONDA_DEFAULT_ENV%CMD看当前是否处于 conda 环境。如果是你可以通过conda config --set auto_activate_base false关掉基础环境自动激活或者在项目里建一个.vscode/settings.json指定终端的env变量来禁止自动激活虚拟环境。尤其要注意 Cursor 这类以 AI 能力为卖点的编辑器很多 AI 辅助功能会自动探测项目环境有时候它会把终端初始化脚本改掉。遇到终端环境异常时把编辑器里的 AI 相关环境检测临时关掉再试往往能定位问题。4.3 权限目录与Node安装位置的坑最后一个雷区是 Windows 的目录权限。Node.js 如果装在系统盘C 盘的 Program Files 下npm 执行某些全局安装命令时比如npm install -g可能会因为当前终端进程没有管理员权限而报EPERM或EACCES错误。有两种应对思路。第一种是给终端授予管理员权限但每次都要右键“以管理员身份运行”对于日常开发很烦。第二种是把 Node.js 装到用户目录下比如直接下载 zip 包解压到D:\nodejs或C:\Users\用户名\nodejs然后手动把路径写进用户 PATH。这样做的好处是在该用户下所有操作都不涉及系统级权限问题全局安装 npm 包也不会弹 UAC。不过说实话对多数前端开发者来说用官方 MSI 默认路径装 Node然后配合 nvm-windows 管理版本已经足够日常使用了。全局安装权限的问题可以用npm config set prefix C:\Users\用户名\npm-global这种方式单独指定全局包安装目录和系统目录隔离开也能避免权限冲突。5. 常见问题与排查技巧实录这一章把上面涉及到的排查点整理成速查表再加几个我亲手排过的真实案例。碰到问题可以直接对照查。5.1 常见问题速查表下面这些是遇到频率最高的组合我按症状、原因、解决方式列出来了。症状可能原因解决方式npm 提示无法加载 npm.ps1禁止运行脚本PowerShell 执行策略限制Set-ExecutionPolicy -Scope CurrentUser RemoteSigned或改默认终端为 CMDnpm 不是内部或外部命令PATH 未包含 node 安装目录检查系统变量 PATH补上 node 路径重启编辑器编辑器里找不到 node/npm但系统 CMD 正常编辑器未刷新环境变量或 nvm 映射失败完全退出编辑器重开必要时重启系统npm install 卡死 / 超时默认官方源太慢npm config set registry https://registry.npmmirror.comnpm install 报 ERESOLVE 错误依赖树版本冲突用npm install --legacy-peer-deps临时绕过或升级 npm、调整依赖版本终端前面多了 (base) 前缀conda 自动激活conda config --set auto_activate_base falsenpm install -g 报 EPERM / EACCES系统目录无写权限指定全局安装目录或使用用户目录下安装 Nodenpm 可以跑但 npx 报错npx 命令未正确配置检查 node 安装目录中是否存在 npx.cmd / npx.ps1必要时重装 Node5.2 改完执行策略仍旧报错有朋友遇到过这种情况在管理员 PowerShell 里执行了Set-ExecutionPolicy RemoteSigned确认修改成功回到 VS Code 终端却仍然报“禁止运行脚本”。要说清楚这里有两个容易被忽略的环节。第一个环节是作用域冲突。前面提过MachinePolicy 或 UserPolicy 由组策略控制优先级高于 CurrentUser。如果你在公司电脑上组策略可能把执行策略锁死为 Restricted。这种情况下你在 CurrentUser 里怎么改都白搭。验证方法是用Get-ExecutionPolicy -List看所有作用域如果 MachinePolicy 后面有值且不是 Undefined基本就是被锁了。公司电脑不建议硬改组策略直接用方案三切 CMD 最稳妥。第二个环节是编辑器终端进程没有重新加载。VS Code 系的编辑器在启动时会继承当时的系统环境如果你先改了执行策略然后只关了终端面板再打开那个新终端仍然是从旧进程里拉起来的策略值可能还是旧的。正确做法是执行Developer: Reload Window或者干脆退出编辑器重新打开。改了系统级配置后“重启编辑器”这个动作太关键值得反复强调。5.3 编辑器终端与系统终端命令不一致还有一个很迷惑的现象系统 PowerShell 里跑 npm 正常打开编辑器终端却不行。这通常不是执行策略的问题而是编辑器终端加载了不同的 profile 文件。Windows PowerShell 启动时会执行当前用户和系统级的 profile 脚本VS Code 系内置终端启动时也会模拟一次完整登录。如果你的 profile 脚本里写了某些自定义函数、别名或修改了 PATH就会导致编辑器终端里的环境和直接打开 PowerShell 不完全一致。排查方法是在编辑器终端里执行$PROFILE查看当前 profile 路径然后重点检查有没有对 npm、node 做 alias 映射。有些开发者喜欢在 profile 里加Set-Alias npm npm.cmd这种做法让编辑器里 npm 直接指向 cmd 版本可以绕过策略问题但副作用是某些 PowerShell 脚本调 npm 时会行为不一致。我见过最奇葩的一个案例是用户曾在 profile 里把 npm 映射成了C:\Program Files\Git\usr\bin\npm一个 Unix 风格的 node 脚本在 Git Bash 环境没问题在 PowerShell 里却打不开排查了半天最后发现是 alias 的问题。如果你确定不想要 profile 里的干扰项可以临时用无 profile 模式启动 PowerShell 验证powershell -NoProfile。在这个模式下如果 npm 正常工作就已经把原因定位到 profile 脚本了然后逐个排查里面的配置即可。5.4 实用建议与避坑清单最后给几条我在实际开发中总结出来的通用建议不一定直接对应某个报错但按这个习惯来能避免很多编辑器终端与 npm 的玄学问题。第一装 Node.js 时尽量选用官方 MSI 安装包并勾选“Add to PATH”。不要嫌默认路径带空格就手动改到自定义目录反而容易出环境变量问题。默认路径在绝大多数情况下都没问题真正让你踩坑的是执行策略不是路径空格。第二日常打开编辑器写前端代码建议把默认终端统一设置成 CMD 或 PowerShell 二选一不要两边混着用。尤其不要在一台机器上忽而 CMD、忽而 PowerShell、忽而 Git Bash每换一种终端都会遇到命令解析差异最终浪费时间在各种“为什么这行命令刚才还能跑”的困惑上。第三遇到 npm 相关报错先做信息采集再动手。按顺序执行node -v、npm -v、where node、where npm、npm config get registry把结果看一遍基本就能判断问题方向远比直接重装 Node 有效率。这条经验帮我省过很多无用功。第四在 AI 编辑器Trae、Cursor里让 AI 生成或执行终端命令时记得先确认它正在使用的终端类型。有些 AI 编辑器的终端命令面板默认会用 PowerShell 执行脚本如果 AI 自动帮你跑npm install失败了先看一眼终端左下角是 PowerShell 还是 CMD再决定是否切终端。别让 AI 的自动化操作反复触发同一个坑。写在最后和我自己的使用习惯直接相关的一个建议是如果你长期在 Windows 上做前端开发与其记住那一堆执行策略命令不如花半分钟把 VS Code/Cursor/Trae 的默认终端切到 CMD再把 npm 镜像源设置好。这两个动作做完编辑器终端里的 npm 体验基本就和 macOS 上没太大区别了。而如果你以后有写 PowerShell 脚本的需求再把执行策略调整为 RemoteSigned 也不迟两者并不冲突。这套配置我现在每配一台新电脑都会顺手做一次已经成了固定流程。希望这篇文章能帮你彻底清掉这个 Node 环境里最常见也最烦人的小坑。
返回列表