我想在 React Native 项目中使用当前给定的本地 IP 地址。
因此,我创建了一个 Powershell 脚本文件,用于查找 IP 地址并将其保存到系统变量 $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
现在我想在我的项目的 .env 文件中传递这个变量。
虽然$npm_package_name工作正常,但$env:IPADDR似乎不起作用。输出结果不是评估先前定义的环境变量,而是变量文字文本本身,即 console.log(REACT_APP_API_URL) --> http://$env:IPADDR:3000/ 而不是评估的结果http://192.168.10.4:3000/。
我的 .env 文件是这样创建的。
REACT_APP_API_URL=http://$env:IPADDR:3000/ REACT_APP_NAME=$npm_package_name
那么,我哪里做错了?如何使用 PowerShell 环境变量 $env:IPADDR 动态评估 REACT_APP_API_URL?
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
我发现无法在
.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