cari

Rumah  >  Soal Jawab  >  teks badan

Pembolehubah persekitaran Windows powershell dalam fail .env React-native?

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粉431220279P粉431220279517 hari yang lalu730

membalas semua(1)saya akan balas

  • P粉976737101

    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 run.ps1 PowerShell yang terakhir.

    #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
    

    balas
    0
  • Batalbalas