无法在 PowerShell 中为 npm-config 设置环境变量

Cannot set environment variables for npm-config in PowerShell

当我尝试在 Windows Terminal 中使用 PowerShell 和命令 set test1=value1 设置环境变量时,我没有收到任何错误。但是,当我尝试使用 set 命令检查所有环境变量时,我得到以下提示:

cmdlet Set-Variable at command pipeline position 1
Supply values for the following parameters:
Name[0]:

我读到,当使用 PowerShell 时,您使用以下方法设置环境变量:

$Env:test1 = "value1";    

我想设置变量,以便在我的后端 custom-environment-variables.json 我可以存储一个名称,config 可以使用 config.get("test").

提取它

custom-environment-variables.json:

{
    "test": "test1",
}

但每次我尝试这个时,它都会显示 Error: Configuration property "test" is not defined

执行相同的 CMD 程序(直接或通过 Windows 终端)我没有遇到任何问题。知道是什么原因造成的吗?

首先,简单的部分:

I get no errors but when I try to check all env. variables calling "set" I get the following prompt:

那是因为 PowerShell 中的 set 命令行为不同。它是 PowerShell Set-Variable cmdlet 的别名。你可以用 Get-Alias.

看到这个

另外,PowerShell 变量是不是环境变量。正如您所评论的,在 PowerShell 中设置环境变量的正确方法是:

$env:variablename = "value"

PowerShell 中 set 的等效命令(获取所有环境变量及其值的列表)是:

Get-ChildItem env:
# Or using the alias
dir env:
# Or using another alias
ls env:

这会访问 PowerShell“环境提供程序”,它本质上是(我过于简单化的总结)PowerShell 提供的包含环境变量的“虚拟 drive/filesystem”。您也可以在这里创建变量。

更多阅读:about_Environment_Variables 来自 PowerShell 文档


至于 config 模块的核心问题,我无法重现。它在 PowerShell 和 CMD 中都能正常工作。因此,让我 运行 通过我的结果,希望它能帮助您了解可能的不同之处。所有测试都是在 Windows 终端中执行的,尽管正如我们在评论中确定的那样,这对您来说 PowerShell 与 CMD 的区别更大:

config\default.json:

{
  "test": "Original Value"
}

config\custom-environment-variables.json:

{
  "test": "test1"
}

没有 test1 变量集的 CMD:

运行 node 在 CMD 中:

> const config = require('config')
undefined
> config.get('test')
'Original Value'
>

带有 test1 变量集的 CMD:

退出节点,然后返回 CMD:

>set test1=Override
>node

在节点中:

Welcome to Node.js v14.16.1.
Type ".help" for more information.
> const config = require('config')
undefined
> config.get('test')
'Override'
>

未设置 test1 变量的 PowerShell:

Welcome to Node.js v14.16.1.
Type ".help" for more information.
> const config = require('config')
undefined
> config.get('test')
'Original Value'
>

带有 test1 变量集的 PowerShell:

在 PowerShell 中:

PS1> $env:test1="Override"
PS1> node

在节点中:

Welcome to Node.js v14.16.1.
Type ".help" for more information.
> const config = require('config')
undefined
> config.get('test')
'Override'
>