HTML・CSSテックラボ

ファイル連結とUglifyを使った圧縮で発生するエラーと、その対処法

GulpやPreprosなどのツールでJavaScriptのファイルを連結することができますが、その際にUglifyというツール・機能を使ってファイル内のデータを圧縮することができます。このような際、次のようなエラーがブラウザのコンソールに出力されることがあります。

****.js:** Uncaught TypeError: (void (intermediate value)(...)) is not a function
at ****.js:**

連結前の単体ではエラーが起きない場合、高い確率で文末のセミコロンが省略されていることが原因です。たとえば、ライブラリでファイルの最後が ()で終わっている場合、ファイル単体では問題ありませんが、他のファイルと連結すると、文末のセミコロンがないためにその後に連結されたファイルの命令文と結合されてエラーになってしまいます。

単体では問題ないが、他ファイルを後に連結するとエラーになる例
(function(){
...
})()

このような場合は、セミコロンが足りないファイルの最後にセミコロンを追加するか、次の連結するファイルの先頭にセミコロンを追加してください。これでエラーを回避できます。

(function(){
...
})();

関連記事