电子建设者install-app-deps尝试包含react-native,而我在webpack中设置了别名来反应原生电子

时间:2018-05-31 09:11:18

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

我如何告诉电子制造商打包反应原生电子而不是反应原生?我在电子制作器文档中找不到任何关于别名的内容,这也令人惊讶,因为它不是本机模块,因此它不包含任何.node文件,而webpack(通过electon-webpack)已经处理了所有文件包装。

这是在Ubuntu上。

使用由electronic-webpack管理的webpack服务器(使用命令electron-webpack dev)的开发构建非常有效。

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

我还尝试复制react-native-electron文件夹并将其重命名为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

1 个答案:

答案 0 :(得分:0)

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

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