electron - node.js - ng : file path\ng.ps1 无法加载,因为在此系统上禁用了运行脚本。
electron - node.js - ng : file path\ng.ps1 无法加载,因为在此系统上禁用了运行脚本。
我正在尝试在Windows 10的Visual Studio Code中编译一个项目,我的设置如下:\n1)npm版本为6.12\n2)Node.js版本为12.13\n3)Angular CLI版本为8.3.19\n我遇到的问题是,一旦我尝试运行ng serve,我就会收到以下输入:ng:无法加载文件C:\\Users\\name\\AppData\\Roaming\\npm\\ng.ps1,因为在此系统上禁用了运行脚本。接下来是“有关更多信息,请参阅https:/go.microsoft.com/fwlink/?LinkID=135170中的about_Execution_Policies。”。\n我尝试过的方法\n1)我访问了建议的网站,并发现Set-ExecutionPolicy -ExecutionPolicy RemoteSigned应该是我要在shell中输入的命令。因此,我做的是:\nPS C:\\Users\\raggi\\OneDrive\\Desktop\\pitalkdashboard> Set-ExecutionPolicy -ExecutionPolicy RemoteSigned\n但是导致了以下错误:\nSet-ExecutionPolicy:拒绝访问注册表键HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\PowerShell\\1\\ShellIds\\Microsoft.PowerShell。要更改默认(LocalMachine)范围的执行策略,请使用“以管理员身份运行”选项启动Windows PowerShell。要更改当前用户的执行策略,请运行“Set-ExecutionPolicy -Scope CurrentUser”。\n而这正是我所做的,所以顺序如下:\nPS C:\\Users\\raggi\\OneDrive\\Desktop\\pitalkdashboard> Set-ExecutionPolicy -Scope CurrentUser\n下面是Shell提示的内容,我只需要插入RemoteSigned:\ncmdlet Set-ExecutionPolicy at command pipeline position 1\nSupply values for the following parameters:\nExecutionPolicy: RemoteSigned\n之后,我尝试ng serve来启动整个项目,但是收到了不同的错误,由于太长,我将其放在了下面的截图中:\n\n我对这条路线没有更多的想法了。\n2)根据这里和这里的建议,我尝试以管理员身份访问和运行,如下面的截图所示:\n
\n但是我在Shell上只看到以下内容(然而Shell会立即消失,我只有时间截图):\n
\n3)我对这个问题进行了更深入的研究,发现了一些额外的见解,比如这个和这个额外的来源。然而,帖子唯一指出的是再次使用Set-ExecutionPolicy -ExecutionPolicy RemoteSigned,而我在上面的1)中已经尝试过了。\n4)在进一步研究后,我找到了这个,但不幸的是,我没有使用到有用的信息。\n代码\n如果有用的话,下面是我在package.json中的代码:\n{\n \"name\": \"pi-talk-dashboard\",\n \"version\": \"0.0.0\",\n \"scripts\": {\n \"ng\": \"ng\",\n \"start\": \"ng serve\",\n \"build\": \"ng build\",\n \"test\": \"ng test\",\n \"lint\": \"ng lint\",\n \"e2e\": \"ng e2e\"\n },\n \"private\": true,\n \"dependencies\": {\n \"@agm/core\": \"^1.0.0-beta.5\",\n \"@angular/animations\": \"^6.0.3\",\n \"@angular/common\": \"^6.0.3\",\n \"@angular/compiler\": \"^6.0.3\",\n \"@angular/core\": \"^6.0.3\",\n \"@angular/forms\": \"^6.0.3\",\n \"@angular/http\": \"^6.0.3\",\n \"@angular/platform-browser\": \"^6.0.3\",\n \"@angular/platform-browser-dynamic\": \"^6.0.3\",\n \"@angular/router\": \"^6.0.3\",\n \"chart.js\": \"^2.7.3\",\n \"core-js\": \"^2.5.4\",\n \"electron\": \"^7.1.0\",\n \"express\": \"^4.17.1\",\n \"moment\": \"^2.22.2\",\n \"ng2-charts\": \"^1.6.0\",\n \"rxjs\": \"^6.0.0\",\n \"zone.js\": \"^0.8.26\"\n },\n \"devDependencies\": {\n \"@angular-devkit/build-angular\": \"^0.803.17\",\n \"@angular/cli\": \"~6.0.8\",\n \"@angular/compiler-cli\": \"^6.0.3\",\n \"@angular/language-service\": \"^6.0.3\",\n \"@types/jasmine\": \"~2.8.6\",\n \"@types/jasminewd2\": \"~2.0.3\",\n \"@types/node\": \"~8.9.4\",\n \"codelyzer\": \"~4.2.1\",\n \"jasmine-core\": \"~2.99.1\",\n \"jasmine-spec-reporter\": \"~4.2.1\",\n \"karma\": \"~1.7.1\",\n \"karma-chrome-launcher\": \"~2.2.0\",\n \"karma-coverage-istanbul-reporter\": \"~2.0.0\",\n \"karma-jasmine\": \"~1.1.1\",\n \"karma-jasmine-html-reporter\": \"^0.2.2\",\n \"protractor\": \"^5.4.1\",\n \"ts-node\": \"~5.0.1\",\n \"tslint\": \"~5.9.1\",\n \"typescript\": \"~2.7.2\"\n }\n}\n编辑\n在以管理员身份运行-ExecutionPolicy Unrestricted后,以下脚本以notepad的形式打开,但我不确定它的用途。我附上了截图和打开的文件的代码:\n
\n代码如下:\n#!/usr/bin/env pwsh\n$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent\n$exe=\"\"\nif ($PSVersionTable.PSVersion -lt \"6.0\" -or $IsWindows) {\n # Fix case when both the Windows and Linux builds of Node\n # are installed in the same directory\n $exe=\".exe\"\n}\n$ret=0\nif (Test-Path \"$basedir/node$exe\") {\n & \"$basedir/node$exe\" \"$basedir/node_modules/@angular/cli/bin/ng\" $args\n $ret=$LASTEXITCODE\n} else {\n & \"node$exe\" \"$basedir/node_modules/@angular/cli/bin/ng\" $args\n $ret=$LASTEXITCODE\n}\nexit $ret\n编辑2\n在PowerShell上运行-ExecutionPolicy Unrestricted后,什么都没有改变。但是出现了一个错误。Data path \".builders[\'app-shell\']\" should have required property \'class\'。\n请参见以下截图:\n
\n我对如何运行这个项目和解决ng serve问题的想法用尽了,如果有任何见解或指导,将对解决这个问题有所帮助。
问题:electron - node.js - ng : file path\ng.ps1 cannot be loaded because running scripts is disabled on this system
原因:在系统上禁用了运行脚本,导致ng.ps1文件无法加载。
解决方法:
1. 打开终端(Terminal)。
2. 输入以下命令以绕过限制并通过ng服务器启动应用程序:
Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope CurrentUser
ng serve
3. 重新运行应用程序:
electron - node.js - ng : file path\ng.ps1 cannot be loaded because running scripts is disabled on this system
问题出现的原因:
这个问题的原因是因为在系统上禁用了运行脚本。默认的执行策略是RemoteSigned,要求从互联网下载的所有脚本和配置文件都必须由受信任的发布者签名。由于大多数PowerShell脚本都没有签名,因此在这种策略下无法运行它们。
解决方法:
1. 以管理员身份打开PowerShell。
2. 运行以下命令:
Set-ExecutionPolicy -ExecutionPolicy Unrestricted
这将设置执行策略为Unrestricted,允许运行未签名的脚本和配置文件。
需要注意的是,只需要以管理员身份运行PowerShell一次来设置全局的执行策略为Unrestricted。之后的操作不需要以管理员身份运行。
当出现终止错误时(即运行后出错并退出),PowerShell窗口会迅速关闭。最好的方法是打开一个新的PowerShell窗口,导航到你的目录,并从那里运行脚本,这样任何错误都会在控制台中显示。
如果遇到其他错误,请在原始答案中编辑并添加新错误的说明。
此外,可以通过在PowerShell中导航到文件所在的目录,然后运行以下命令来将特定文件(ng.ps1)的属性设置为Unrestricted:
Set-ExecutionPolicy -ExecutionPolicy Unrestricted -File ng.ps1
需要注意的是,这是一个PowerShell设置,而不是脚本设置。
以上方法可以解决ng.ps1文件无法加载的问题。