web-dev-qa-db-ja.com

JS-libファイルを結合できません

Index.htmlファイルには複数のlibファイルがあり、実行中のアプリに適切な順序で読み込まれます。

<!-- example of some of them... -->
<script src="/./sys/lib/jquery.min.js"></script>
<script src="/./sys/lib/jquery.ui.min.js"></script>
<script src="/./sys/lib/jquery.easing.min.js"></script>
<script src="/./sys/lib/underscore.min.js"></script>
<script src="/./sys/lib/handlebars.min.js"></script>
<script src="/./sys/lib/backbone.min.js"></script>
<script src="/./sys/lib/moment.min.js"></script>
<script src="/./sys/lib/libs.extensions.js"></script>

これらは正常に動作し、すでにすべて縮小されています。

次に、これらすべてを1つのファイルにまとめてロード速度を上げたいと思います。

<script src="/./sys/lib/libs.all.js"></script>

そこで、新しいlibs.all.jsファイルを作成し、縮小した.jsファイルをzero修正で正確に同じシーケンスで上記のように1つずつ貼り付けます。これは、moment.jsに到達するまで機能します。それを貼り付けて実行すると、JSエラーが発生します。

TypeError: (intermediate value)(...) is not a function

不足しているものは取得できません-HTMLファイルに同期ロードされたときに正しい順序で貼り付けた場合、違いは何ですか?

45
dthree

ほとんどの場合、jsファイルの最後に;がありません。エラーの原因と思われるものを開き、最後に;を追加するか、次のjsファイルの最初の行に;を追加します。

105
bagonyi

セミクローンと改行を追加するだけです

';\n'

各ファイルの終わりに

2
Amr Ibrahim

JavaScriptコードを変更しても問題の根本原因が修正されるわけではないため、新しいJavaScriptファイルを導入するとすぐにこの問題が再び発生する可能性があります。

永続的な修正には少なくともいくつかの選択肢があります-セミコロンが欠落していても将来的にこれが発生しないようにビルドを変更する必要があります:

  • 連結するファイルの間に;を挿入します。これは通常、ファイルの連結方法に応じて、簡単な1行の変更です。
  • 最初にファイルを縮小してから連結します。これにより、連結するファイルの間に\ nが残り、ASIがこれを処理します。
2
dale.lotts