開發掉坑(二)前端靜態資源 Uncaught SyntaxError: Unexpected token <


某天,有同學反饋后台管理系統出現靜態資源無法加載的問題。

復現如下:

  1. 進入首頁。

  2. 點擊側邊欄某個子功能,靜態資源可正常訪問到。

  3. 等待10分鍾左右,點擊側邊欄其他子功能,無法訪問到靜態資源。

  4. 查看控制台,發現輸出 Uncaught SyntaxError: Unexpected token <

一開始檢查了一下是不是服務器上面沒有這個靜態資源文件,隨機找了一台服(注意,從這里開始掉坑里了),發現文件是存在;

接着懷疑是靜態文件因為某種原因,會不時變動文件名,但是測試了一下,半小時內文件未曾發生變動;

然后又是在so上各種查 Uncaught SyntaxError: Unexpected token <有可能是什么情況,但都和我們的情況不符

最后想起,后台系統域名是有解析到兩台服的,然后一查,發現果然兩台服的靜態資源文件名不一致。

結論:
原來是因為前端是在各自服務器上面編譯的,而編譯打包腳本不是根據文件hash值算出文件名(后續補充vue的各個編譯算法是怎么給打包后的文件起名字的),所以導致出現差異。
第一次進入后台,DNS解析到了A服務器,過了一段時間,再點其他功能,DNS可能就解析到B服務器了,但是請求的文件名依舊是A/a.js,而B服務器上面是沒有a.js這個文件的。

解決方案:
用一台編譯機進行編譯,再同步到業務服上面去。


免責聲明!

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



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