プロジェクトに requirejs を改造しようとしていますが、断続的にファイルに「404 Not Found」が表示されます。
おおよそ、3 回または 4 回のリロードごとに、次のエラーが発生します。
GET http://localhost:8080/build/jquery.js
Uncaught Error: Script error for: jquery
GET http://localhost:8080/build/touchSwipe.js
Uncaught Error: Script error for: touchSwipe
私のファイルは次のようになります。
config.js
require.config({
paths: {
'jquery': 'vendor/jquery',
'touchSwipe': 'vendor/jquery.touchSwipe.min',
'scripts': 'scripts/'
},
shim: {
'touchSwipe': {
deps: ['jquery']
}
}
});
require(['main']);
main.js
require(
['scripts/menu',
.. more js files .. ]);
私は grunt-contrib-requirejs を使用してファイルを最適化し、すべて正常に動作しているようです
Gruntfile.js
requirejs: {
compile: {
options: {
baseUrl: "path/to/file/",
mainConfigFile: "path/to/file/config.js",
dir: 'path/to/build/',
modules: [
{
name: 'main'
},
],
uglify: {
no_mangle: true
},
}
}
}
...そして空白を埋めるために、私の main.hbs ファイルにはこのスクリプトタグがあります
<script data-main="/build/config" src="/js/vendor/require.js"></script>
私が言ったように、これはすべて正常に機能しており、さらにモジュールを導入しようとしています。特定のページにのみロードしたいモジュール。
関連するページの最後に次のコードを追加して、これを実行しようとしています
<script type="text/javascript">
require(['scripts/page1']);
</script>
page1.js ファイルは次のようになります...
define(['jquery', 'touchSwipe'], function ($j) {
...
});
これらのエラーが表示されないときは、サイトは正常に動作しているようです。注意すべきもう 1 つの点は、Grunt タスクを介してコードを実行した場合にのみ発生するように見えることです。
問題は、エラーの URL が間違っていることです。jQuery は /build/ ではなく /build/vendor/ にありますが、touchSwipe はライブラリ用に定義したパスです。タイミングの問題のようです。新しいファイルの後に構成がロードされています。