electron - node.js - ng:文件 path\ng.ps1 无法加载,因为 运行 脚本在此系统上被禁用

electron - node.js - ng : file path\ng.ps1 cannot be loaded because running scripts is disabled on this system

我正在尝试在 Visual Studio Code 中编译 Windows 10 上的项目,我的设置如下:

1) npm 版本 6.12

2) Node.js 版本 12.13

3) Angular CLI: 8.3.19

我遇到的问题是,当我尝试 运行 ng serve 时,我收到以下输入:ng : File C:\Users\name\AppData\Roaming\npm\ng.ps1 cannot be loaded because running scripts is disabled on this system。其次是For more information, see about_Execution_Policies at https:/go.microsoft.com/fwlink/?LinkID=135170.

到目前为止我尝试了什么

1)我去网站上建议,发现Set-ExecutionPolicy -ExecutionPolicy RemoteSigned应该是我必须在shell中输入的命令。因此我所做的是:

PS C:\Users\raggi\OneDrive\Desktop\pitalkdashboard> Set-ExecutionPolicy -ExecutionPolicy RemoteSigned

但这导致了以下错误:

Set-ExecutionPolicy : Access to the registry key HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\ShellIds\Microsoft.PowerShell is denied. To change the execution policy for the default (LocalMachine) scope, start Windows PowerShell with the "Run as administrator" option. To change the execution policy for the current user, run "Set-ExecutionPolicy -Scope CurrentUser".

这正是我所做的,所以顺序是:

PS C:\Users\raggi\OneDrive\Desktop\pitalkdashboard> Set-ExecutionPolicy -Scope CurrentUser

下面是Shell的提示,我只需要插入RemoteSigned:

cmdlet Set-ExecutionPolicy at command pipeline position 1

Supply values for the following parameters:

ExecutionPolicy: RemoteSigned

之后,我尝试 ng serve 启动整个项目,但收到了不同的错误,因为它太长,我将其放在打印屏幕下方:

没有更多关于继续这条路线的想法。

2) 按照建议 and also here

我尝试访问 运行 作为 administrator,如下面的打印屏幕所示:

但我在 shell 上看到的唯一内容是下面的内容(但是 shell 立即消失,我只有时间拍摄屏幕)

3) 我深入研究了这个问题并发现了一些额外的见解,例如 this one and also this additional source。然而,post 唯一指出的是再次使用我在上面第 1) 点尝试过的 Set-ExecutionPolicy -ExecutionPolicy RemoteSigned

4) 经过更多的研究,我遇到了 但不幸的是我没有使用任何有用的信息。

代码

下面是我 package.json 中的内容,如果有用的话:

{
  "name": "pi-talk-dashboard",
  "version": "0.0.0",
  "scripts": {
    "ng": "ng",
    "start": "ng serve",
    "build": "ng build",
    "test": "ng test",
    "lint": "ng lint",
    "e2e": "ng e2e"
  },
  "private": true,
  "dependencies": {
    "@agm/core": "^1.0.0-beta.5",
    "@angular/animations": "^6.0.3",
    "@angular/common": "^6.0.3",
    "@angular/compiler": "^6.0.3",
    "@angular/core": "^6.0.3",
    "@angular/forms": "^6.0.3",
    "@angular/http": "^6.0.3",
    "@angular/platform-browser": "^6.0.3",
    "@angular/platform-browser-dynamic": "^6.0.3",
    "@angular/router": "^6.0.3",
    "chart.js": "^2.7.3",
    "core-js": "^2.5.4",
    "electron": "^7.1.0",
    "express": "^4.17.1",
    "moment": "^2.22.2",
    "ng2-charts": "^1.6.0",
    "rxjs": "^6.0.0",
    "zone.js": "^0.8.26"
  },
  "devDependencies": {
    "@angular-devkit/build-angular": "^0.803.17",
    "@angular/cli": "~6.0.8",
    "@angular/compiler-cli": "^6.0.3",
    "@angular/language-service": "^6.0.3",
    "@types/jasmine": "~2.8.6",
    "@types/jasminewd2": "~2.0.3",
    "@types/node": "~8.9.4",
    "codelyzer": "~4.2.1",
    "jasmine-core": "~2.99.1",
    "jasmine-spec-reporter": "~4.2.1",
    "karma": "~1.7.1",
    "karma-chrome-launcher": "~2.2.0",
    "karma-coverage-istanbul-reporter": "~2.0.0",
    "karma-jasmine": "~1.1.1",
    "karma-jasmine-html-reporter": "^0.2.2",
    "protractor": "^5.4.1",
    "ts-node": "~5.0.1",
    "tslint": "~5.9.1",
    "typescript": "~2.7.2"
  }
}

编辑

在 运行 以管理员身份设置 -ExecutionPolicy Unrestricted 后,以下脚本在 notepad 中打开,但我不确定它的用途。我附上了打印屏幕和打开文件的代码:

代码如下:

#!/usr/bin/env pwsh
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent

$exe=""
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
  # Fix case when both the Windows and Linux builds of Node
  # are installed in the same directory
  $exe=".exe"
}
$ret=0
if (Test-Path "$basedir/node$exe") {
  & "$basedir/node$exe"  "$basedir/node_modules/@angular/cli/bin/ng" $args
  $ret=$LASTEXITCODE
} else {
  & "node$exe"  "$basedir/node_modules/@angular/cli/bin/ng" $args
  $ret=$LASTEXITCODE
}
exit $ret

编辑 2

运行开启电源后Shell -ExecutionPolicy Unrestricted 没有任何变化。但是出现错误。 Data path ".builders['app-shell']" should have required property 'class'. 请参阅下面的打印屏幕

关于如何 运行 这个项目以及如何解决这个 ng serve 问题,我 运行 没有想法,任何其他方向的见解或指导都将对解决这个问题。

您必须将执行策略设置为 无限制 而不是 RemoteSigned。根据 Set-ExecutionPolicy:

RemoteSigned. Requires that all scripts and configuration files downloaded from the Internet are signed by a trusted publisher. The default execution policy for Windows server computers.

由于 99% 的 PowerShell 脚本都是未签名的,因此根据此政策,99% 的时间您将无法 运行 它们。

  1. 以管理员身份打开 PowerShell。
  2. 运行:

.

Set-ExecutionPolicy -ExecutionPolicy Unrestricted
  • 问题

我遇到了同样的问题,经过一些研究,我发现只需绕过限制并通过 ng 服务器启动您的应用程序即可。

  • 您可以在终端输入以下内容:

PS C:\Users\\\ClientApp> Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope CurrentUser

PS C:\Users\\\ClientApp> 服务

  • 重新运行您的应用:

http://localhost:4200/

我试图 运行 electron-packager 和 运行 解决这个问题

Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope CurrentUser

已解决问题。

打开错误中提到的文件,只需删除 ng.ps1 文件就可以正常工作了..

在我的例子中是 nodemon。ps1。我删除了它并启动了服务器。

以管理员身份打开 Powershell 并执行以下命令:

Set-ExecutionPolicy -ExecutionPolicy Unrestricted

将 bin 文件夹路径添加到环境变量路径,将起作用

尝试使用 "npx ng" 而不是 "ng"。如果我尝试使用任何 "ng" 命令,包括 "ng new",我会得到相同的权限错误。使用这个 npm package runner 为我解决了这个问题。

设置环境变量路径,但不适用于我的情况。然后使用电源shell(作为管理员模式)运行下面的行

Set-ExecutionPolicy -ExecutionPolicy Unrestricted

现在可以使用了。谢谢

运行 在您的项目文件夹中执行此命令

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

祝你好运

运行 下面是 powershell 中的命令。

Set-ExecutionPolicy -ExecutionPolicy Unrestricted

如果一切正常,您将看到如下屏幕。

我已经安装了 angular 12,当我 运行 使用 ng serve

的应用程序时,甚至出现如下错误
  • 类别信息: 安全错误: (:) [], PSSecurityException
  • FullyQualifiedErrorId : UnauthorizedAccess

下面是我用来解决未授权访问问题的命令

Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope CurrentUser

3步解决

  1. 首先,打开命令提示符并运行这个命令。

set-ExecutionPolicy RemoteSigned -Scope CurrentUser

  1. 现在运行第二个命令

Get-ExecutionPolicy

  1. 要查看策略,运行此命令

Get-ExecutionPolicy -list

然后你会看到

范围执行策略


MachinePolicy 未定义

用户策略未定义

进程未定义

当前用户 RemoteSigned

本地机器未定义

当前用户 RemoteSigned

本地机器未定义

now 运行 命令 ng --version 或 ng serve

我在 运行 Angular 12 应用程序时遇到了同样的问题。 运行 以下脚本通过以管理员模式打开 Windows PowerShell 解决了问题。

Set-ExecutionPolicy -ExecutionPolicy Unrestricted