【发布时间】:2017-04-17 14:22:48
【问题描述】:
我正在按预期输入条件(正如控制台所证明的那样,该控制台仅在 if 语句 if process.env.BROWSER === true 中被命中,但 if 语句中的 require 仍然在 process.env.BROWSER === true 或 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'));
});
}
【问题讨论】:
标签: javascript node.js reactjs if-statement react-native