Javascript 是否可以有条件地在NodeJS/React中导入模块?

Javascript 是否可以有条件地在NodeJS/React中导入模块?,javascript,node.js,reactjs,Javascript,Node.js,Reactjs,我正在处理一个React/NodeJS项目,在这个项目中,我希望能够有条件地导入一个节点模块,如果并且仅当一个参数没有通过prop传递给我的组件时 const WysiwygField = ({ onChange, autoFocus, field, errors, value: serverValue }) => { if (!field.config.apiKey) import tinymce from 'tinymce/tinymce'; .... } 由于节点模块的工作方

我正在处理一个React/NodeJS项目,在这个项目中,我希望能够有条件地导入一个节点模块,如果并且仅当一个参数没有通过prop传递给我的组件时

const WysiwygField = ({ onChange, autoFocus, field, errors, value: serverValue }) => {
   if (!field.config.apiKey) import tinymce from 'tinymce/tinymce';
....
}
由于节点模块的工作方式,我怀疑这是不可能的。我在谷歌上搜索过一些东西,但我对条件导入的概念感到困惑——这似乎意味着在NodeJS中无法实现,而动态导入似乎得到了Babel的支持:


这是一条死胡同,还是有什么办法可以做我想做的事?(这样做的原因是因为
tinymce react
的工作方式:如果tinymce包没有被导入,那么它就会进入CDN,在CDN中传递的
apiKey
是有用的。我之所以不从一开始就这样编码,也就是说,确保它从未加载本地库,是因为我在一个更大的框架,我没有自由排除该选项)。

我相信您可以使用所需的语法进行条件导入,例如:

let someImport;
if (condition) someImport = require('module');

我相信您可以使用require语法进行条件导入,例如:

let someImport;
if (condition) someImport = require('module');

您可以使用
动态导入
来实现这一点<喜欢:

const A = condition && import('./a.js')

虽然要使用动态导入,您必须使用
babel

您可以使用
动态导入
来实现这一点<喜欢:

const A = condition && import('./a.js')

尽管出于好奇,要使用动态导入,您必须使用
babel

,但这是否会将“导入”的值指定给“const A”?看起来它只是导入模块,而没有将其分配给变量。出于好奇,看起来它将根据MDN工作。这是否将“导入”的值分配给“常量a”?看起来它只是导入模块,而不将其分配给变量。看起来它将根据MDN工作。它是否需要位于模块顶部,即所有外部,或者它可以位于任何位置?我认为的任何位置-抱歉,我没有看到它是否需要位于模块顶部,即所有外部,或者它可能在任何地方?我想在任何地方-对不起,我没有看到这个