这是我对构建失败的提炼。症状是,当使用 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 资源中。
我有三个测试用例,一个有效,另外两个给出上述失败。
我的问题:
好像我需要在“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: []
},