以下是完整的错误:
tsc : 无法加载文件 C:\Users\Administrator\AppData\Roaming\npm\tsc.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 ht tps:/go.microsoft.com/fwlink/?LinkID=135170 中的 about_Execution_Policies。 所在位置 行:1 字符: 1 + tsc -v + ~~~ + CategoryInfo : SecurityError: (:) [],PSSecurityException + FullyQualifiedErrorId : UnauthorizedAccess
遇到这个错误的时候,当然首先是跳到官方的指南https:/go.microsoft.com/fwlink/?LinkID=135170看一下。发现是PowerShell 执行策略的问题,于是你可以按照指南更新一下执行策略。
但是当我发现是给所有的脚本都添加成信任执行的时候,我就犹豫了。然后认真去看了一下tsc的模块目录如下: 然后查看了里面的脚本内容,对比了一下,其实tsc是Linux环境执行,tsc.cmd是window的cmd执行的,tsc.ps1则是对应着power shell,对比了一下几个脚本其实其核心都是运行node "$basedir/../typescript/bin/tsc" "$@",那么问题就很好解决了,把终端切换cmd或者使用git bash去执行即可。 其实出现这个问题都是新手使用vscode的问题导致的,于是乎,我接着往下看怎么解决vscode默认的终端切换问题。因为是初次使用故此记录一下: 文件->首选项->设置:搜索‘shell’,找到下图所示样例,也可以将默认终端修改成git bash。 至此 是初步解决了问题启动的问题,但是最终的问题并没有解决,于是乎,接着往下挖坑。能不能添加单独的脚本签名而不是所有的脚本都直接跳过所有的脚本认证呢? 1、你需要把执行策略更换成AllSigned 具体命令如下: Set-ExecutionPolicy -ExecutionPolicy AllSigned -Scope CurrentUser 2、需要给运行的脚本添加签名
node "$basedir/../typescript/bin/tsc" "$@"
Set-ExecutionPolicy -ExecutionPolicy AllSigned -Scope CurrentUser
# 1. Create a certificate to use for signing powershell scripts $selfsigncert = New-SelfSignedCertificate -Type CodeSigningCert -Subject "CN=PowerShell Code Signing" -KeyUsage DigitalSignature -KeyAlgorithm RSA -KeyLength 2048 -CertStoreLocation "Cert:\LocalMachine\My" # 2. Sign script Set-AuthenticodeSignature -FilePath .\tsc.ps1 -Certificate $selfsigncert # 3. Move the root cert into Trusted Root CAs Move-Item "Cert:\LocalMachine\My\$($selfsigncert.Thumbprint)" Cert:\LocalMachine\Root
第一步是构造一个签名证书,第二步是为脚本添加签名,第三步比较重要,是将证书添加为可信任证书。 如果没有第三步,提示如下: 如果上面没有问题,则可以看到如下情况: 脚本的末尾会自动添加上签名: 于是就可以正常执行tsc -v 的命令,提示如下: 根据自己的需要而选择即可。 此次 解决了问题,又学习了vscode的使用方法,还熟悉了一下win的shell的脚本,注册表等。 坚持遇到问题不慌,先自己一步一步定位,后再搜索引擎。
tsc -v
https://www.it1352.com/2045661.html