【问题标题】:Conditional import in javascriptjavascript中的条件导入
【发布时间】:2018-01-17 00:05:18
【问题描述】:

我有一个为节点或电子构建的本机库。导入此库的项目使用节点实现(用于测试)。另一个项目需要电子版本。有没有办法可以为父项目胜过的条件导入设置配置?

Project A (electron)
  |- Project B (node)
      |- Library (native node/electron)

所以项目 B 会将配置设置为节点,从而导致库有条件地加载本机节点。项目 A 可以覆盖该配置以强制库加载本机电子配置。

我该如何设置这样的东西?

【问题讨论】:

  • 我不确定这是否行得通,所以只是评论,但你试过if (config === node) { import node from 'nodejs'; }我不明白为什么理论上行不通
  • 当我搜索时,条件导入似乎是可行的。我只是不确定如何使用 JS/NPM 来驱动这种情况。
  • node版本和electron版本有什么区别? Electron 可以很好地运行任何节点的东西

标签: javascript node.js npm electron


【解决方案1】:

你可以像这样查看你是否在电子中运行:

if(process.versions['electron']) {
    console.log('we are running in electron');
}

if(window && window.process && window.process.type) {
    console.log('we are running in electron');
}

【讨论】:

  • 这完全是关于动态库加载,而您的第一个答案就成功了。最初我使用 cross-env 来设置环境并基于它进行切换。虽然process.versions 感觉有点脆弱,但与我的 hack 相比它很光滑,而且维护工作也少得多。谢谢!
  • 还有一些其他的建议here
  • 我对 API 不熟悉,您对使用哪个 API 有偏好吗?看起来这个涉及较少的未定义检查。
  • is-electron 库更彻底一些,因为如果禁用了nodeIntegration,它将工作。图书馆还是只有a few lines of code
猜你喜欢
  • 2019-01-20
  • 1970-01-01
  • 2018-11-29
  • 1970-01-01
  • 2019-01-27
  • 1970-01-01
  • 2018-10-27
  • 2020-10-18
  • 2018-10-24
相关资源
最近更新 更多