Je souhaite utiliser l'adresse IP locale actuelle donnée dans mon projet React Native.
J'ai donc créé un fichier de script Powershell qui trouve l'adresse IP et l'enregistre dans une variable système$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
Maintenant, je souhaite passer cette variable dans le fichier.envde mon projet.
Bien que$npm_package_namefonctionne bien,$npm_package_name工作正常,但$env:IPADDR似乎不起作用。输出结果不是评估先前定义的环境变量,而是变量文字文本本身,即console.log(REACT_APP_API_URL) --> http://$env:IPADDR:3000/而不是评估的结果http://192.168.10.4:3000/ne semble pas fonctionner. Le résultat de sortie n'est pas l'évaluation de la variable d'environnement définie précédemment, mais le texte littéral de la variable lui-même, c'est-à-direconsole.log(REACT_APP_API_URL) --> http://$env:IPADDR:3000/à la place. du résultat de l'évaluationhttp://192.168.10.4:3000/.
Mon.envfichier est créé ainsi.
REACT_APP_API_URL=http://$env:IPADDR:3000/ REACT_APP_NAME=$npm_package_name
Alors, qu’est-ce que j’ai fait de mal ? Comment utiliser les variables d'environnement PowerShell$env:IPADDR动态评估REACT_APP_API_URLpour évaluer dynamiquementREACT_APP_API_URL?
J'ai trouvé qu'il n'y avait aucun moyen de travailler dans le fichier
.env文件中本地扩展 Windows 环境变量。相反,我扩展了 PowerShell 脚本,通过直接在.envpour "remplacer" les variables requises.Il s'agit du fichier de script final
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