我有一個反應應用程式,他們在其中使用環境變數獲取后端 api 地址。下面的例子:
this._baseUrl = process.env.API_GATEWAY;
在本地開發環境中,開發團隊創建 .env。檔案并在該檔案中設定環境變數值,以呼叫后端 api 并且一切正常,如下所示。
API_GATEWAY=http://localhost:3000
當我為同一個專案創建 CI/CD 管道時,一切正常,應用程式也成功部署在 AWS(s3 存盤桶)上,但我無法在使用 npm 構建專案時更改環境變數的值,如下所示:
- script: |
npm run build
displayName: 'npm build'
env:
API_GATEWAY: $(envAppApi)
上面使用的API_GATEWAY是代碼中使用的環境變數的名稱,$(envAppApi)是變陣列中定義的變數。
但是當應用程式部署在 AWS 上時,環境變數值沒有改變,它顯示以下錯誤。
mutation.js:106 ReferenceError: process is not defined
at new e (http-api.ts:17:42)
at Function.value (http-api.ts:24:12)
at Object.mutationFn (Auth.ts:13:26)
at Object.fn (mutation.js:132:31)
at c (retryer.js:95:31)
at new u (retryer.js:156:3)
at t.executeMutation (mutation.js:126:20)
at mutation.js:86:20
(http-api.ts:17:42) => 這是設定 API_GATEWAY 環境變數的同一行,上面已經顯示。
問題陳述: 有什么方法可以在創建 CI/CD 管道時更新環境變數的值?所以應用程式成功運行。謝謝。
注意:我不想使用 .env。我的管道中的檔案,用于更新反應應用程式中的環境值。
uj5u.com熱心網友回復:
有什么方法可以在創建 CI/CD 管道時更新環境變數的值?
是的。我建議您可以使用 RegEx Match & Replace 中的 RegEx Match & Replace任務。
此任務將使用正則運算式來匹配檔案中的欄位。
這是一個例子:
steps:
- task: RegExMatchReplace@2
displayName: 'RegEx Match & Replace'
inputs:
PathToFile: test.js
RegEx: 'this._baseUrl = ([a-zA-Z] (\.[a-zA-Z] ) )_[a-zA-Z] ;'
ValueToReplace: ' this._baseUrl = $(envAppApi)'
然后值將更新。
您可以使用此站點來轉換正則運算式:Regex Generator
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/495371.html
