Windows Powershell-Umgebungsvariablen in der React-native .env-Datei?
P粉431220279
P粉431220279 2023-09-14 10:00:27
0
1
709

Ich möchte die aktuell angegebene lokale IP-Adresse in meinem React Native-Projekt verwenden.

Also habe ich eine Powershell-Skriptdatei erstellt, die die IP-Adresse findet und in einer Systemvariablen speichert $env:IPADDR.

Write-Host "Getting current IP Address"
$env:IPADDR = (Get-WmiObject -Class Win32_NetworkAdapterConfiguration | where {$_.DHCPEnabled -ne $null -and $_.DefaultIPGateway -ne $null}).IPAddress | Select-Object -First 1
Write-Host "    ---->" $env:IPADDR

Jetzt möchte ich diese Variable in der .env-Datei meines Projekts übergeben.

Während $npm_package_name gut funktioniert, $npm_package_name工作正常,但$env:IPADDR似乎不起作用。输出结果不是评估先前定义的环境变量,而是变量文字文本本身,即 console.log(REACT_APP_API_URL) --> http://$env:IPADDR:3000/ 而不是评估的结果http://192.168.10.4:3000/ scheint es nicht zu funktionieren. Das Ausgabeergebnis ist nicht die Auswertung der zuvor definierten Umgebungsvariablen, sondern der Variablenliteraltext selbst, d. h. stattdessen console.log(REACT_APP_API_URL) --> http://$env:IPADDR:3000/ des Ergebnisses der Auswertung http://192.168.10.4:3000/.

Meine .env-Datei wird so erstellt.

REACT_APP_API_URL=http://$env:IPADDR:3000/
REACT_APP_NAME=$npm_package_name

Also, was habe ich falsch gemacht? Wie verwende ich PowerShell-Umgebungsvariablen $env:IPADDR 动态评估 REACT_APP_API_URL, um REACT_APP_API_URL dynamisch auszuwerten?

P粉431220279
P粉431220279

Antworte allen(1)
P粉976737101

我发现无法在 .env 文件中本地扩展 Windows 环境变量。相反,我扩展了 PowerShell 脚本,通过直接在 .env 文件中工作来“替换”所需的变量。

这是最终的 run.ps1 PowerShell 脚本文件。

#Find local IP addr and save it to $env:IPADDR variable
Write-Host "Getting current IP Address"
$env:IPADDR = (Get-WmiObject -Class Win32_NetworkAdapterConfiguration | where {$_.DHCPEnabled -ne $null -and $_.DefaultIPGateway -ne $null}).IPAddress | Select-Object -First 1
Write-Host "    ---->" $env:IPADDR

#Replace the value of the key [REACT_APP_API_URL] with the new server ie http://xxx.xxx.xxx.xxx:3000/
$regex = '(?<=REACT_APP_API_URL=)[^=]*'
$file = '.env'
$addr = 'http://' + $env:IPADDR + ':3000/'
(Get-Content $file) -replace $regex, $addr | Set-Content $file

#Start NPM script
npm run start
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage