【发布时间】:2020-10-13 03:26:50
【问题描述】:
我试图尽可能简单地做到这一点,我研究了 Yarn Workspaces 一段时间,但这是一个目前不适用于 Electron 的解决方案,问题太多了。
- 我在这里有一个 Electron 项目:./electron/
- 我在这里有一个包含组件的目录:./common/
这些组件是在 React/JSX 中开发的,它们并没有什么花哨的地方。也就是说,我正在使用钩子 (useXXX)。
我尝试了很多方法来包含这些组件(理想情况下,我想使用 Yarn Workspaces,但它只会增加问题的数量),但都失败了。这就是为什么我想避免使用纱线链接或工作区或使公共库成为库等的原因。我只希望我的 Electron 项目的行为就像文件在 ./electron 下一样。就是这样。
我最接近的解决方案是使用 electron-webpack,并用这个配置覆盖它:
module.exports = function(config) {
config = merge.smart(config, {
module: {
rules: [
{
test: /\.jsx?$/,
//include: /node_modules/,
include: Path.resolve(__dirname, '../common'),
loaders: ['react-hot-loader/webpack', 'babel-loader?presets[]=@babel/preset-react']
},
]
},
resolve: {
alias: {
'@common': Path.resolve(__dirname, '../common')
}
}
})
return config
}
我可以导入模块,它们可以工作……除非我使用钩子。我收到了“无效的挂钩调用警告”:https://reactjs.org/warnings/invalid-hook-call-warning.html。
我觉得 /common 文件夹没有被 babel 正确编译,但现实是我不知道去哪里看或尝试什么。我想有一个解决方案,通过那个 webpack 配置。
提前感谢您的帮助:)
【问题讨论】:
标签: reactjs webpack electron react-hooks webpack-4