json文件不能有注釋


之前一直忽視了這個問題,直接導致taiga-front的部署的時候不能通過其他IP訪問。

如圖:

 

 

 首先是提示 

app-loader.js:1  Your conf.json file is not a valid json file, please review it.

 這樣導致用默認的conf 也就是后面那句:

Failed to load resource: net:localhost:8000/api/v1/stats/discover Failed to load :ERR_CONNECTION_REFUSED

現在因為部署版本的conf.json讀取失敗(因為注釋的原因),導致加載了默認的開發時配置。默認的conf.json:

{
    "api": "http://localhost:8000/api/v1/",
    "eventsUrl": null,
    "eventsMaxMissedHeartbeats": 5,
    "eventsHeartbeatIntervalTime": 60000,
    "debug": true,
    "debugInfo": false,
    "defaultLanguage": "en",
    "themes": ["taiga"],
    "defaultTheme": "taiga",
    "publicRegisterEnabled": true,
    "feedbackEnabled": true,
    "privacyPolicyUrl": null,
    "termsOfServiceUrl": null,
    "maxUploadFileSize": null,
    "contribPlugins": []

}

而部署版的conf.json:

{
    "api": "http://192.168.1.152/api/v1/", "eventsUrl": "ws://192.168.1.152/events", "debug": true, "publicRegisterEnabled": true, "feedbackEnabled": true, "privacyPolicyUrl": null, "termsOfServiceUrl": null, "maxUploadFileSize": null, "contribPlugins": [] }

最大的區別就是后端api 的地址

localhost:8000。相當於本機開發前端,在本機起后端。

而部署時,這里是要替換成域名或主機IP的。

1客戶機訪問 ip地址(80端口)

2nginx相應請求,跳轉的taiga-frontend

3frontend對后端發起請求,即調用ip地址/api/...

4前端節點的nginx根據后面的/api 做反代,才轉到內網后端IP:端口/api/...上

 

那么如果用默認conf.json從外網訪問,沒有訪問taiga主機的IP,而是去找客戶機的localhost:8000,直接導致無法注冊、跳轉(直接卡死在首頁上)

 

——其實,taiga這樣設計也有問題,第3步,按說應該完全封裝內網不應該找不到,不應該再從客戶端看見這種報錯了。

 

 

——解決方案:老實把注釋刪了,留下11行的json

心得:不要想當然,要相信報錯。

自己用pyhon的json.load() 讀一下conf.json,就確認無疑了,再去上網查一下,就確認問題了。

直接用報錯信息搜索,是搜不到答案的。(也許恰恰是自己太弱智了,別人都沒遇到)。

 

——后記,之后還時報這個錯,發現另外一個問題:

frontend 復制配置文件在 COPY或-v掛源代碼之前了。這樣根據docker image的堆疊機制,導致conf.json被覆蓋(沒有)

源碼的配置文件,是源碼的一部分,在外面生成好,一起掛進去,OK

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM