私の設定(main.js)は次のように定義されています:
require.config({
urlArgs: "bust=" + (new Date()).getTime(),
paths: {
jquery: 'jquery-1.8.3.min',
knockout: 'knockout-2.2.0',
komapping: 'knockout.mapping-latest',
token: 'jquery.tokeninput'
},
shim: {
'token': ['jquery']
}
});
EDIT main.js は共有構成です。すべて同じセットアップを使用するいくつかのページがあり、プロジェクト内のいたるところでバージョン固有のファイル名を変更する必要はありません。 /編集
次のようにページに含まれています。
<script src="/AnswersDev/Scripts/require.js" data-main="/AnswersDev/Scripts/main"></script>
add-report.js は次のように含まれています。
<script type="text/javascript">
require(['Views/add-report']);
</script>
編集 それが原因である可能性が高いようです。インライン スクリプトは、main の前に実行されることがあります。そのため、見つかるはずのエイリアスが定義されていないため、単に .js を探します。 /編集
jquery.tokeninput は私の知る限り、私が使用している唯一の非 AMD モジュールです。作業中のリクエストは、次の一連のリクエストになります (Fiddler キャプチャ)。
- require.js
- main.js
- Views/add-report.js
- Views/add-report-wizard-model.js
- ノックアウト-2.2.0
- jquery-1.8.3.min.js
- Views/add-report-wizard-model-parameter.js
- Views/add-report-wizard-model-step.js
- knockout.mapping-latest.js
非稼働リクエストには、次のようなシーケンスがあります。
- require.js
- Views/add-report.js
- main.js
- Views/add-report-wizard-model.js
- ノックアウト.js
- jquery.js
- Views/add-report-wizard-model-step.js
- Views/add-report-wizard-model-parameter.js
- knockout.mapping-latest.js
add-report.js:
define(['jquery', 'knockout', 'Views/add-report-wizard-model'], function ($, ko, ViewModel) {
... snip ...
});
非動作シーケンスでは、require.js の前に add-report.js が要求され (require.js がロードされた後に非決定論的なロード順序が適用されると予想していました)、ノックアウトと jquery の両方 (両方とも AMD サポートが組み込まれています)に注意してください。間違ったファイル名でリクエストされています。add-report の前に require が要求され、ノックアウトと jquery のファイル名がまだ間違っている他のシーケンスを確認しました。リクエストの間に私が行っている唯一のことは、ブラウザーを更新することです (一度機能すると、機能し続ける傾向があり、壊れると壊れたままになる傾向があることにも注意してください)。外してみましたurlArgs
構成から、まだ同じ問題を観察します。この特定のページでは、jquery.tokeninput は使用されていません。構成ファイルから削除しても、効果はないようです。
この時点で、RequireJS は私にとってまったく信頼できず、現在の状態でコードを本番環境にリリースすることはできません。RequireJS を非常にうまく使用しているように見える人の数を考えると、問題は私のコードのどこかにあるとしか思えませんが、それがどこにあるのかはわかりません。
私が間違っていた可能性のある提案はありますか?ありがとう。
編集: 要求に応じて、knockout.mapping-latest.debug.js からの抜粋:
// Module systems magic dance.
if (typeof require === "function" && typeof exports === "object" && typeof module === "object") {
// CommonJS or Node: hard-coded dependency on "knockout"
factory(require("knockout"), exports);
} else if (typeof define === "function" && define["amd"]) {
// AMD anonymous module with hard-coded dependency on "knockout"
define(["knockout", "exports"], factory);
} else {
// <script> tag: use the global `ko` object, attaching a `mapping` property
factory(ko, ko.mapping = {});
}