私のアプリケーションでは、デプロイごとに異なるバージョン名を使用する環境構成を使用して、アプリケーションが適切にキャッシュ無効化され、ユーザーのブラウザー キャッシュに古いバージョンのコードが含まれないようにしたいと考えています。このガイドに従っていることに注意してください。
したがって、main.js では、何かを行う前に、現在の日付/時刻を使用して環境構成ファイルのキャッシュを破壊する一般的な構成で require.config を呼び出し、環境構成が読み込まれた後、環境を使用します。 urlArgs の一部として「config.version」を使用して、新しくデプロイされたコードが含まれ、古いバージョンではないことを保証します。構成ファイルのオブジェクトには、アプリケーション全体で使用される他のプロパティ (Google アナリティクス アカウント番号など) があることに注意してください。
環境/構成の依存関係をセットアップできるようにする最初のrequire.configを削除すると、r.jsビルドファイルは問題ないように見えますが、再度追加すると、3番目のグループ化に使用しているインフラストラクチャJSモジュールが削除されます-party スクリプトは、アンダースコア ライブラリ (または、そこに含めるライブラリ) が見つからないと言って窒息します。environment/config を含めずに 2 つの require.config 呼び出しを行ったとしても、同じエラーが発生することに注意してください。2 つの require.config 呼び出しでこのエラーが発生する理由はありますか? 助けてくれてありがとう。
//Error:
Error: ENOENT, no such file or directory '<%root_folder%>\dist\js\underscore.js'
In module tree:
infrastructure
私のメインJSファイル
//main.js
require.config({
baseUrl: "js",
waitSeconds: 0,
urlArgs: "bustCache=" + (new Date).getTime()
});
require(["environment/config"], function(config) {
"use strict";
require.config({
urlArgs: "bustCache=" + config.version,
baseUrl: "js",
waitSeconds: 0,
paths: {
underscore: "lib/lodash.underscore-2.4.1-min",
},
shim: {
"underscore":{
exports : "_"
}
}
});
//commented out, b/c not needed to produce the error
//require(["jquery", "infrastructure"], function($) {
//$(function() {
//require(["app/main"], function(app) {
//app.initialize();
//})
//});
//});
});
そして、ここにビルドファイルがあります...
//build file
({
mainConfigFile : "js/main.js",
appDir: "./",
baseUrl: "js",
removeCombined: true,
findNestedDependencies: true,
dir: "dist",
optimizeCss: "standard",
modules: [
{
name: "main",
exclude: [
"infrastructure"
]
},
{
name: "infrastructure"
}
],
paths: {
"cdn-jquery": "empty:",
"jquery":"empty:",
"bootstrap.min": "empty:"
}
})
ここinfrastructure.js
define(["underscore"], function(){});
config ファイル (Google アナリティクスのアカウント番号やその他の環境固有の情報など、より多くのキーが含まれます。)
//config.js
define({version:"VERSION-XXXX", cdn: { jquery: "//path-to-jquery-1.11.0.min" }});
私が実行しているコマンド:「r.js -o build.js」