我正在按预期输入条件(由控制台证明,如果process.env.BROWSER === true
只在if语句中命中,但如果process.env.BROWSER === true
,if语句中的require仍然会被命中。或process.env.BROWSER === false
,这会导致process.env.BROWSER === false
错误。如果我注释掉第一个要求,那么当process.env.BROWSER === false
没有错误时。
我怀疑在JS编译时会以某种方式调用所有需求,但如果是这种情况,我怎样才能有条件地要求模块?这到底发生了什么?
if (process.env.BROWSER) {
language['ES'].push(require('promise?global,locale-es-ES!react-intl/locale-data/es'));
} else{
language['ES'].push(function () {
return Promise.resolve(require('react-intl/locale-data/es'));
});
}
使用module.require这样可以在react-native中工作但在浏览器中抛出TypeError: module.require is not a function
if (process.env.BROWSER) {
language['ES'].push(module.require('promise?global,locale-es-ES!react-intl/locale-data/es'));
} else{
language['ES'].push(function () {
return Promise.resolve(require('react-intl/locale-data/es'));
});
}
尝试查找对此类模块的引用会给出TypeError: Cannot read property 'require' of undefined
if (process.env.BROWSER) {
language['ES'].push(require('react-intl').module.require('promise?global,locale-es-ES!react-intl/locale-data/es'));
} else{
language['ES'].push(function () {
return Promise.resolve(require('react-intl/locale-data/es'));
});
}
答案 0 :(得分:0)
我遇到了与上面相同的问题,但是使用了nodejs并做出了原生的反应。
我通过将module.require()
用于nodejs模块克服了这个问题。请尝试在您的情况下执行此操作(或以任何方式避免直接require
浏览器案例。)
React native不允许条件要求,我认为静态分析在之前加载所有需要。