Rumah > Soal Jawab > teks badan
Saya mahu menggunakan alamat IP tempatan semasa yang diberikan dalam projek React Native saya.
Jadi saya mencipta fail skrip Powershell yang mencari alamat IP dan menyimpannya ke dalam pembolehubah sistem $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
Sekarang saya mahu lulus pembolehubah ini dalam fail .env
projek saya.
Walaupun $npm_package_name
berfungsi dengan baik, $npm_package_name
工作正常,但$env:IPADDR
似乎不起作用。输出结果不是评估先前定义的环境变量,而是变量文字文本本身,即 console.log(REACT_APP_API_URL) --> http://$env:IPADDR:3000/
而不是评估的结果http://192.168.10.4:3000/
nampaknya tidak berfungsi. Hasil output bukanlah penilaian pembolehubah persekitaran yang ditakrifkan sebelum ini, tetapi teks literal pembolehubah itu sendiri, iaitu console.log(REACT_APP_API_URL) --> http://$env:IPADDR:3000/
sebaliknya daripada hasil penilaian http://192.168.10.4:3000/
.
Fail .env
saya dicipta seperti ini.
REACT_APP_API_URL=http://$env:IPADDR:3000/ REACT_APP_NAME=$npm_package_name
Jadi, apa salah saya? Bagaimana untuk menggunakan pembolehubah persekitaran PowerShell $env:IPADDR
动态评估 REACT_APP_API_URL
untuk menilai REACT_APP_API_URL
secara dinamik?
P粉9767371012023-09-15 00:14:40
Saya mendapati bahawa tiada cara untuk bekerja dalam fail .env
文件中本地扩展 Windows 环境变量。相反,我扩展了 PowerShell 脚本,通过直接在 .env
untuk "menggantikan" pembolehubah yang diperlukan.
Ini adalah fail skrip
#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