JavaScript 中的条件同步导入,导出一个简单对象而不是承诺,可能吗?

问题描述 投票:0回答:1

我在 React Native 中有一个构建良好的应用程序,它在网络和移动平台上都运行良好。除了一件事

我总是必须评论其中一个导入

import LokiJSAdapter from '@nozbe/watermelondb/adapters/lokijs';
或者
import SQLiteAdapter from '@nozbe/watermelondb/adapters/sqlite';
取决于我必须运行它的平台。

我什至可以有条件地导入,但问题是我无法更改导出声明的结果,即

export { database }

查看文件的完整代码

import { Database } from '@nozbe/watermelondb';
import { DbModels, DbSchema } from './schema';

let mowebDb = 'moweb';

// import LokiJSAdapter from '@nozbe/watermelondb/adapters/lokijs';
// let adapter = new LokiJSAdapter({
//     schema: DbSchema,
//     dbName: mowebDb,
//     useWebWorker: false,
//     useIncrementalIndexedDB: true,
// })

import SQLiteAdapter from '@nozbe/watermelondb/adapters/sqlite';
let adapter = new SQLiteAdapter({
    dbName: mowebDb,
    schema: DbSchema,
});

const database = new Database({
    adapter,
    actionsEnabled: true,
    modelClasses: DbModels,
});

export { database }

我可以添加一个条件而不是注释行,以产生与下面相同的结果吗?

javascript asynchronous import export
1个回答
0
投票

为了在有条件导入的同时保持导出一致,请尝试在异步函数内进行动态导入,然后根据平台设置适配器。不幸的是,这种方法将返回一个 Promise,而不是一个简单的对象。要解决此问题,您可以在异步函数内初始化数据库,并确保所有数据库操作等到初始化完成。它不像直接导出那么干净,但它允许条件逻辑,同时保持模块导出内容的一致性。请记住,React Native 可能需要特定的设置才能使动态导入顺利工作。

© www.soinside.com 2019 - 2024. All rights reserved.