不想看细节的小伙伴,直接看最后面的总结。
刚进公司,要熟悉一个前端用vue写的项目,由于之前从来没有接触过vue,所以就上网查,按照网上的教程,在命令行新建项目,安装依赖包,运行项目都成功了。但是当使用VSCode运行vue项目,执行cnpm install命令下载依赖包时,持续报错。
vue环境的安装,新建项目的流程,就参见https://blog.csdn.net/qq_33863843/article/details/75249473这篇博客啦,很详细。
但是当在VSCode中引入项目,执行cnpm install的时候,提示:cnpm : 无法加载文件 D:\Program Files\nodejs\node_global\cnpm.ps1。未对文件 D:\Program Files\nodejs\node_global\cnpm.ps1 进行数字签名。无法在当前系统上运行该脚本。有关运行脚本
所在位置 行:1 字符: 1
- cnpm install
-
+ CategoryInfo : SecurityError: (:) [],PSSecurityException + FullyQualifiedErrorId : UnauthorizedAccess。 如下图所示:
然后去网上查,说是权限的问题,执行命令set-ExecutionPolicy RemoteSigned可以解决问题。
然后我就按照操作做了,又报错了。这次的错误是:
set-ExecutionPolicy : Windows PowerShell 已成功更新你的执行策略,但在更具体的作业域中定义的策略覆盖了该设置。由于发生覆盖,你的外壳程序将保留其当前的有效执行策略 AllSigned。请
键入“Get-ExecutionPolicy -List”以查看你的执行策略设置。有关详细信息,请参阅“Get-Help Set-ExecutionPolicy”。
所在位置 行:1 字符: 1
- set-ExecutionPolicy RemoteSigned
- CategoryInfo : PermissionDenied: (😃 [Set-ExecutionPolicy], SecurityException
- FullyQualifiedErrorId : ExecutionPolicyOverride,Microsoft.PowerShell.Commands.SetExecutionPolicyCommand
如下图所示:
错误说是具体策略覆盖了刚更新的策略,程序仍然保持原有的执行策略。反正最终结果就是未生效呗,后面又提示执行Get-ExecutionPolicy -List”以查看你的执行策略设置。
我去网上查了一下Get-ExecutionPolicy -List这个命令是按照优先级来查看执行策略的,优先级由高到低。
例如我的执行完后,是这样的
代表当前程序是以CurrentUser的AllSigned策略执行的。
(关于执行策略及其作用域的解释,想要了解的小伙伴参见https://blog.csdn.net/Jeffxu_lib/article/details/84710386这篇博客。)
所以我们要做的就是将Process作用域的执行策略也修改为RemoteSigned就可以了。
执行命令:Set-ExecutionPolicy RemoteSigned -Scope Process
问题解决。
再次执行cnpm install下载依赖包,发现成功了。
执行npm run dev,项目跑起来了,开心。
总结:
1.参见https://blog.csdn.net/qq_33863843/article/details/75249473这篇博客,在命令行新建项目并运行成功。
2.在VSCode执行cnpm install,报错。
3.执行命令set-ExecutionPolicy RemoteSigned
继续报错
4.执行命令:Set-ExecutionPolicy RemoteSigned -Scope Process
问题解决。
5.执行cnpm install安装依赖包,执行npm run dev运行项目。