私は次の単純な構造を持っています:
index.html
...
<script src="static/js/lib/require.js" data-main="static/js/main"></script>
</head>
...
static/js/main.js
requirejs.config({
baseUrl: 'static/js',
paths: {
m: 'modules'
}
});
require(['m/test01'], function(test01) {
console.log(test01.print());
});
static/js/modules/test01.js
define(['m/test02'], function(test02){
return {
print: function() {
return 'test01 and '+ test02;
}
};
});
static/js/modules/test02.js
define(function() {
return 'test02';
});
index.html を直接 (file:///index.html) 開くと、すべてうまくいきます。スクリプトのロードが機能し、「test01 and test02」がコンソールに記録されます。
ただし、xampp (localhost/requiretest/index.html) 経由で開いている場合、test01.js の読み込みはうまくいきますが、test02.js の場合、コンソール (Firefox) に次のエラーが表示されます。
NetworkError: 404 Not Found - localhost/01-test-grunt/static/js/test02.js
(removed "http://" before localhost for stackoverflow)
ご覧のとおり、URL に「modules/」の部分がありません。何が起こっているのか誰にもわかりませんか?
注: baseUrl を 'static/js/modules' に変更すると機能しますが、ビルドプロセスが面倒なため、これを行うことはできません。とにかく、他のパスも読み込まれないと思いますので、これはバグですか、それとも何か間違っていますか?