我有 2 个独立的文件,其中包含各种 JS 函数。我想根据条件导入其中之一。我不确定该怎么做。
我有:
import { mainURL } from '../../support/helperFunctions.js';
let dataPath = '../../../data/data.js';
if (mainURL.includes('dev')) {
dataPath = '../../../data/dataDev.js';
}
import { coreData, lastUpdated } from dataPath;
但是我收到导入行的错误
Unexpected token
。
我也尝试过
if (mainURL.includes('dev')) {
import { coreData, lastUpdated } from '../../../data/dataDev.js';
}
else {
import { coreData, lastUpdated } from '../../../data/data.js';
}
还有其他一些变体。
有人知道如何在节点中实现这一点吗?
使用动态
import()
语法,这是一个函数,允许您在运行时有条件地导入模块。实施方法如下:
import { mainURL } from '../../support/helperFunctions.js';
let dataModule;
if (mainURL.includes('dev')) {
dataModule = import('../../../data/dataDev.js');
} else {
dataModule = import('../../../data/data.js');
}
// Use an async function to handle the dynamic import and access the module's exports
async function loadData() {
const { coreData, lastUpdated } = await dataModule;
console.log(coreData, lastUpdated);
// You can now use coreData and lastUpdated as needed
}
// Call loadData() to trigger the import
loadData();
import()
返回一个promise,因此我们可以使用await
来获取模块的导出。import()
是异步的,因此您需要将其包装在异步函数中来处理promise。(async () => {
if (somethingIsTrue) {
// import module for side effects
await import("/modules/my-module.js");
}
})();
参考这篇文章: 动态导入 MDN