解決用 gulp 打包 web 項目時報 JS_Parse_Error 錯誤

問題背景

之前一個上線運行的 web 項目,客戶提了點新的需求。于是要修改部分原來的代碼。原來的代碼采用 ES5 書寫。本人現(xiàn)在階段早已轉(zhuǎn)入了 ES6 的陣營。更新代碼完畢后,還是采用 原有的 gulp 打包(我現(xiàn)在的項目中基本都用 webpack 了),竟然出現(xiàn)了如下錯誤:

Error at new JS_Parse_Error (eval at <anonymous>

控制條的報錯信息如下圖:


打包報錯信息

百思不得其解,原來運行好好的項目,我現(xiàn)在也沒做什么大的動作,怎么就跑步起來了呢?甚至連打包都失敗了?

原因分析

由于報錯信息并沒有指向我們自己編寫的文件,而都是指向了與 node.js相關的錯誤信息。于是應該可以判定:

代碼本身的書寫,包括語法等應該沒有問題,否則應該會指向代碼中具體錯誤。

由于經(jīng)驗有限,只得求助于百度、谷歌等。發(fā)現(xiàn)類似錯誤的解決方案中,中文參考資料實在是屈指可數(shù)。StackoverFlow 網(wǎng)站中倒是有不少大神提出與解惑相關的問題。無奈,囿于 English 水平實在有限,還是囫圇吞棗而不得其要。沒辦法,自己在苦思冥想罷。

打包失敗代碼追蹤

最終發(fā)現(xiàn),多半是在 JavaScript 中書寫了 ES6 的代碼,然后也沒有采用 babel 等工具,把它轉(zhuǎn)化為 ES5 的寫法,就直接壓縮打包了。然后,就報這樣的錯誤了。

解決方案:很簡單,把 有關 ES6 的寫法全部都轉(zhuǎn)化為 ES5,再打包即可。就本次案例而言,把原來 console.log中的新型語法給注釋掉(或者編譯掉)即可打包成功。

打包成功

心得

修復錯誤容易,而定位到錯誤的根源卻著實不易。不過這正是學習的過程,這也是篤進的必然之路。

為什么看似如此簡單的一個錯誤卻很難被察覺?我想了想,與思維定式有著莫大的關系。熟悉了 ES6寫法后,似乎覺得這樣的寫法都是自然而然的事情,而很少再去深究細挖了。直到外在的某一事物,在某一時刻撞了一下自己,才恍然意識到,哦,原來我們也是很容易被自己的思維給框住的!

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 寫在開頭 先說說為什么要寫這篇文章, 最初的原因是組里的小朋友們看了webpack文檔后, 表情都是這樣的: (摘...
    Lefter閱讀 5,452評論 4 31
  • let 和 const 命令 let 命令 塊級作用域 const 命令 頂層對象的屬性 gl...
    安小明閱讀 1,045評論 0 0
  • 函數(shù)參數(shù)的默認值 基本用法 在ES6之前,不能直接為函數(shù)的參數(shù)指定默認值,只能采用變通的方法。 上面代碼檢查函數(shù)l...
    呼呼哥閱讀 3,717評論 0 1
  • let 命令 塊級作用域 const 命令 頂層對象的屬性 global 對象 let 命令 基本用法 ES6 新...
    嘉奇呦_nice閱讀 1,700評論 0 2
  • 今天,我想和大家分享我的代課感受。 首先,我想先簡要說明情況。我代課的學校是我當年所念的大學,授課課程以設計課程為...
    牙欣欣閱讀 2,012評論 0 0

友情鏈接更多精彩內(nèi)容