一、背景
在Windows PowerShell等终端输入(npm、cnpm、nodemon)运行项目命令时,被提示无法加载文件,系统禁止运行脚本。具体错误描述如下图:
这个错误通常是由于Windows系统安全策略导致的,系统会默认阻止运行某些脚本文件。系统阻止某些脚本运行,是为了保护系统不被恶意脚本入侵。
二、解决方法
为了解决这个问题,可以尝试以下两种方法:
1、npx nodemon run dev
2、修改Windows系统执行策略;
三、实现与结果
先使用第一种方法运行项目,跳转到项目目录文件夹下,运行npx nodemon run dev,发现项目能够成功运行起来了,并且系统也不会报错。
npx nodemon run dev
运行效果图如下:
第二种方法就是修改系统执行策略,可以放松或关闭严格策略。转入管理员模式:
Start-Process powershell -Verb runAs
可以使用以下命令查看执行政策的状态:
# 查看单个执行策略
Get-ExecutionPolicy
# 查看所有执行策略
Get-ExecutionPolicy -List
如果以管理员在终端中执行get-ExecutionPolicy命令返回输出Restricted,就是禁止状态。下面是查询出来的执行策略状态列表,其中Undefined表示该数据项未定义,也就是windows默认阻止。
接下来修改系统执行策略,以管理员身份打开终端执行以下代码:
set-ExecutionPolicy RemoteSigned
执行策略可帮助你防止执行不信任的脚本。更改执行策略可能会产生安全风险,如 https:/go.microsoft.com/fwlink/?LinkID=135170中的 about_Execution_Policies 帮助主题所述。是否要更改执行策略?
[Y] 是(Y) [A] 全是(A) [N] 否(N) [L] 全否(L) [S] 暂停(S) [?] 帮助 (默认值为“N”): A
执行完成之后,再次使用get-ExecutionPolicy检查执行策略状态,返回RemoteSigned就可以了。
再次使用npm、cnpm运行项目时,它又报错了:
>npm run dev
> [email protected] dev
> ./node_modules/.bin/nodemon bin/www
'.' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
这是因为npm版本不匹配,只需要重新选择安装npm版本(6、7、8)即可。
# 安装npm,@后面接版本号
npm i -g npm@6
# 查看npm 版本
npm -v
重新选择npm版本安装后,就可以重新试着运行项目了,如果不行就再尝试更换npm版本。
更多内容请参考: