これは、私が得ていたビルドの失敗をまとめたものです。その症状は、shrinksafe で最適化すると、ビルドが次のエラーで失敗することでした。
[exec] js: "<eval'ed string>#1(Function)#1(eval)", line 127: uncaught JavaScript runtime exception: TypeError: Cannot read property "1" from null
[exec] at <eval'ed string>#1(Function)#1(eval):127
[exec] at <eval'ed string>#1(Function)#1(eval):163
私のコードが次のようなパターンで nls ファイルを取り込んだ場合
"dojo/i18n!./nls/MyResource"
ただし、この構造は多くの Dojo コードで共通しており、クリーンにビルドされます。そこで、いくつかの dojo コードを自分のモジュールにコピーして実験したところ、nls リソースが dojo/dojo レイヤーにロードされた場合、レイヤーが正しくビルドされ、同じ nls リソースを自分のレイヤーにロードした場合、上記のエラーが発生することがわかりました。
したがって、これを最小限のケースに切り詰めて、dijit/form/_ComboBoxMenuMixin.js を自分のモジュールと対応する nls リソースにコピーしました。
3 つのテスト ケースがあり、1 つは機能し、他の 2 つは上記の失敗を示します。
私の質問:
「dojo/dojo」層に独自の nls リソースを含める必要があるようです。まさにこの層でなければなりません。さすがにこれはいけませんよね?私の代替手段は何ですか?
作業プロファイル:
layers: {
"dojo/dojo" : {
customBase: false,
include: [
"modules/nls/ComboBox",
],
exclude: []
},
"MyLayer" : {
customBase: false,
include: [
"modules/ComboCopy",
],
exclude: []
},
}
失敗: 同じレイヤー内の nls
layers: {
"dojo/dojo" : {
customBase: false,
include: [
],
exclude: []
},
"MyLayer" : {
customBase: false,
include: [
"modules/nls/ComboBox",
"modules/ComboCopy",
],
exclude: []
},
}
失敗しました。別のレイヤー名で nls をロードしてください
layers: {
"myNlsLayer" : {
customBase: false,
include: [
"modules/nls/ComboBox",
],
exclude: []
},
"MyLayer" : {
customBase: false,
include: [
"modules/ComboCopy",
],
exclude: []
},