Open fbaldo31 opened 6 years ago
Hi @fbaldo31, sorry for the late answer. The source of problem is that the plugin itself is interpreting as a native module and is trying to use Electron Rebuild on one of its loaders. I will try to reproduce this strange behavior with your configuration and reply as soon as possible. I am also going to prepare a simple working "Hello, world" example, too.
Hi @fbaldo31 as I have promised I have prepared a quick sample which can be found at https://github.com/evonox/electron-native-plugin-samples/tree/master/hello-world
I am having a similar issue but with sqlite3
Have tried several different configurations but can't seem to get this right. No matter what I do it appears the rebuild is looking for a node_modules dir that isn't there
[0] Rebuilding native module sqlite3...
[0]
[0] An unhandled error occurred inside electron-rebuild
[0] ENOENT: no such file or directory, lstat '/my-project-path/node_modules/sqlite3/node_modules'
webpack.js
const webpack = require('webpack');
const path = require('path');
const CopyWebpackPlugin = require('copy-webpack-plugin');
const ElectronNativePlugin = require("electron-native-plugin");
const outputPath = path.resolve(__dirname, '../app/build');
module.exports = {
mode: 'development',
context: path.join(__dirname, '../app'),
devtool: 'inline-source-map',
entry: {
app: [
'react-hot-loader/patch',
'webpack-dev-server/client?http://localhost:9000',
'webpack/hot/only-dev-server',
'./src/main/components/index.tsx',
],
},
output: {
path: outputPath,
filename: 'app.bundle.js',
publicPath: 'http://localhost:9000/',
},
resolve: {
// changed from extensions: [".js", ".jsx"]
extensions: [".ts", ".tsx", ".js", ".jsx"]
},
devServer: {
hot: true,
publicPath: 'http://localhost:9000/',
historyApiFallback: true,
port: 9000,
},
module: {
rules: [
{
test: /\.tsx?$/,
use: 'awesome-typescript-loader',
exclude: /node_modules/
},
{
test: /\.js$/,
use: [
{
loader: "electron-native-patch-loader",
options: {
custom: {
"sqlite3": {
"test": "sqlite3\\.js$",
"patches": [
{
"find": "var binding_path = binary.find(path.resolve(path.join(__dirname,'../package.json')));",
"isFindRegExp": false,
"replace": ""
},
{
"find": "require(binding_path);",
"isFindRegExp": false,
"replace": "require('./binding/node-v57-win32-x64/node_sqlite3.node')"
}
]
}
}
}
},
{
loader: "electron-native-loader",
options: {
outputPath: outputPath // Set here your defined path for the output bundles, e.g. "./dist"
}
}
]
},
{
test: /\.node$/,
use: "electron-native-loader"
},
// {
// test: /\.js$/,
// exclude: /node_modules/,
// use: {
// loader: 'babel-loader',
// },
// },
{
test: /\.scss$/,
use: ['style-loader', 'css-loader', 'sass-loader'],
},
{
test: /\.(png|jpg|gif)$/,
use: [{
loader: 'file-loader',
options: {},
}],
},
{
enforce: "pre",
test: /\.js$/,
loader: "source-map-loader",
exclude: /node_modules/
}
],
},
plugins: [
new ElectronNativePlugin(),
new webpack.IgnorePlugin(/node-gyp/),
new webpack.HotModuleReplacementPlugin(),
new webpack.NamedModulesPlugin(),
new CopyWebpackPlugin([{
from: './src/main/app.js',
},
{
from: './src/main/index.html',
},
]),
],
node: {
fs: 'empty'
}
};
Hi @stowns, thanks for reporting the issue. I would ask you for some more information:
Dear @fbaldo31 , @stowns I very apologize for not answering for long time. I have bad news in the sense that I am very busy with a different project for now. I have a request for a person who might be willing to take over the ElectronNativePlugin to continue its development. If you know about someone who might continue the development of this plugin, then I am ready to transfer the ownership of this project.
Complete error message is :
Environment: Ubuntu 16.04 Node 8.9.1 yarn 1.7.0 webpack 4.14.0
I may miss something in webpack.config.js, (a full working example would be appreciated :) ).