在之前的 SAP Spartacus 標準開發中,每次我從 Github 上 clone 了最新的程式碼後,必須手動修改 environment.ts 裡的配置值,將 CX_BASE_URL 和 b2b 修改成實際值:
後來我研究了一下 package.json 裡定義的指令碼:發現使用了 env-cmd 這個工具:
env-cmd --no-override -e dev,b2c,$SPA_ENV ng serve
env-cmd 的作用:A simple node program for executing commands using an environment from an env file.
For more complex projects, a .env-cmdrc file can be defined in the root directory and supports as many environments as you want. Simply use the -e flag and provide which environments you wish to use from the .env-cmdrc file.
在專案的根目錄下,放置一個名為 .env-cmdrc 的檔案,然後使用 -e 標籤,指定需要使用 env-cmdrc 檔案裡定義的哪個 environments 去執行指令碼。
Using multiple environment names will merge the environment variables together. Later environments overwrite earlier ones in the list if conflicting environment variables are found.
如果 -e 後面跟了多個環境名,則每個環境名裡包含的變數值,會被 merge 成一個整體。 如果兩個環境裡都包含了同樣的變數值,則後出現的環境的變數值會覆蓋先前的環境變數值。
set CX_B2B=true && set CX_BASE_URL=https://spartacus-dev0.eastus... && yarn start
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-F2e1FWFU-1618206305589)(https://upload-images.jianshu...
這個b2b列印出來的值不正確:
CX_BASE應該為 boolean 型別,但是列印出來的值為 ""true ", 這是一個字串。而 occBaseUrl 的值,9002 後面也多了一個埠號:
經過研究發現,將 set CX_B2B=true與&&之間的空格刪除即可,我用的是 Windows10 作業系統,不知道 Linux 系統上的 shell 有沒有這個問題。
修改之後,問題順利解決:
更多Jerry的原創文章,盡在:"汪子熙":