【问题标题】:electron-builder install-app-deps tries to include react-native while I have an alias set in webpack to react-native-electronelectron-builder install-app-deps 尝试包含 react-native 而我在 webpack 中有一个别名设置为 react-native-electron
【发布时间】:2018-11-10 06:01:12
【问题描述】:

如何告诉 electron-builder 打包 react-native-electron 而不是 react-native?我在 electron-builder 文档中找不到任何关于 alias 的内容,这也令人惊讶,因为它不是本机模块,因此它不包含任何 .node 文件,并且 webpack(通过电子 webpack)已经处理了所有的包装.

这是在 Ubuntu 上。

使用由 electron-webpack 管理的 webpack 服务器(使用命令electron-webpack dev)进行开发构建完美运行。

如果我尝试yarn add react-native,它会构建,但是当我启动生成的应用程序时,它会打开但什么也不做。

我还尝试复制 react-native-electron 文件夹并将其重命名为 react-native。然后它会构建,但如果我启动它,它甚至不会打开,但我确实看到它在系统监视器中什么也没做。


当我在没有 react-native 的情况下尝试 electron-builder install-app-deps 时,它会出错:

Error: Unresolved node modules: react-native
    at /media/dj/dev/scan-app-desktop/node_modules/electron-builder-lib/src/util/packageDependencies.ts:108:17
From previous event:
    at Collector.resolveUnresolvedHoisted (/media/dj/dev/scan-app-desktop/node_modules/electron-builder-lib/src/util/packageDependencies.ts:164:10)
    at /media/dj/dev/scan-app-desktop/node_modules/electron-builder-lib/src/util/packageDependencies.ts:82:18
    at Generator.next (<anonymous>)
    at runCallback (timers.js:763:18)
    at tryOnImmediate (timers.js:734:5)
    at processImmediate (timers.js:716:5)
From previous event:
    at Collector.collect (/media/dj/dev/scan-app-desktop/node_modules/electron-builder-lib/src/util/packageDependencies.ts:84:6)
    at /media/dj/dev/scan-app-desktop/node_modules/electron-builder-lib/out/util/packageDependencies.js:123:47
    at Generator.next (<anonymous>)
(...)

在我的 package.json 我有 electronWebpack 配置:

      "electronWebpack": {
        "renderer": {
          "webpackConfig": "webpack.renderer.additions.js"
        }
      },

在 webpack.renderer.additions.js 中:

const path = require('path')

const resolve = {
  alias: {
    'react-native': path.join(__dirname, 'node_modules/react-native-electron')
  }
}

module.exports = {resolve}

https://github.com/PaulLeCam/react-native-electron/issues/4

【问题讨论】:

    标签: javascript react-native webpack electron electron-builder


    【解决方案1】:

    似乎devDependencies 的定义与我习惯的有点不同。在这种情况下,通常只是依赖项的包现在仅由 webpack 使用,而不是由 electron-builder 使用。 electron-builder 包含依赖项,但不包含 devDependencies。所以所有没有原生组件的 js 模块都可以在 devDependencies 中,因为它们不必包含在最终的电子构建中,因为 webpack 已经捆绑了它们。 electron-builder 不查看 webpack 配置,因此它不知道别名,但事实证明,像 ract-navigation 和它们的子依赖项(如 react-native)这样的包无论如何都不应该在构建中出现两次。

    因此,将不应单独包含的所有内容移至 devDependencies,应用程序将编译。 它没有因为错误而启动,但这可能是另一个问题

    【讨论】:

      猜你喜欢
      • 2017-01-29
      • 1970-01-01
      • 2017-11-07
      • 2019-02-05
      • 2023-03-08
      • 2018-06-04
      • 1970-01-01
      • 2021-01-10
      • 1970-01-01
      相关资源
      最近更新 更多