Webpack — модуль не найден: Ошибка: не удается разрешить ‘node_modules chokidar lib’

#node.js #webpack #electron #chokidar

#node.js #webpack #электрон #chokidar

Вопрос:

Когда я компилирую свое электронное приложение с пакетом npm «Electron-reload». Я получил сообщение об ошибке. В настоящее время Electron-reload использует chokidar для просмотра файлов моих приложений, поэтому он может перезагрузить его при обнаружении изменения файла.

Ошибка, возникающая при компиляции моего основного процесса electron с помощью webpack :

 WARNING in ./node_modules/chokidar/lib/fsevents-handler.js
Module not found: Error: Can't resolve 'fsevents' in 
'C:[...]node_moduleschokidarlib'
  

И ошибка, которая возникает при запуске моего электронного приложения :

 TypeError: Cannot read property 'filename' of undefined
 at Object.eval (webpack:///./node_modules/electron-reload/main.js?:12:32)
 at eval (webpack:///./node_modules/electron-reload/main.js?:86:30)
 at Object../node_modules/electron-reload/main.js (C:[...]DistElectronapp.js:322:1)
 at __webpack_require__ (C:[...]DistElectronapp.js:20:30)
 at eval (webpack:///./Electron/app.ts?:5:5)
 at Object../Electron/app.ts (C:[...]DistElectronapp.js:109:1)
 at __webpack_require__ (C:[...]DistElectronapp.js:20:30)
 at C:[...]DistElectronapp.js:84:18
 at Object.<anonymous> (C:[...]DistElectronapp.js:87:10)
 at Module._compile (internal/modules/cjs/loader.js:1145:30)
  

Я не могу найти ничего полезного в Интернете от Electron-reload, chokidar или webpack. Вот мой webpack.config.js

 const path = require('path');
module.exports = {
    mode: "development",
    entry: "./Electron/app.ts",
    target: "electron-main",
    module: "es6",
    watch: true,
    stats: 'minimal',
    output: {
        path: path.resolve(__dirname, "./Dist/Electron/"),
        filename: "app.js",
    },
    module: {
        rules: [
            {
                test: /.tsx?$/,
                use: 'ts-loader',
                include: /Electron/,
            },
        ]
    },

    resolve: {
        extensions: ['.ts', '.tsx', '.js']
    }
}
  

спасибо за вашу помощь.

Ответ №1:

Хорошо, я не решил исходную проблему. Но поскольку я хотел перезагрузить процесс рендеринга electron только при изменении файла, я нашел другой способ сделать это без «электронной перезагрузки»

Внутри функции, которая отображает мое главное окно, я добавил :

 import {join} from 'path';
import {watch} from 'fs';

app.whenReady().then(()=>{
   watch('./Dist/Client/', (eventType, filename)=>{ win.reload(); })
} 
  

Теперь все работает нормально.

Комментарии:

1. Из того, что я прочитал, watch менее надежный, но я думаю, что я иду тем же путем…

2. Да, это сработало для меня, по крайней мере, в Windows. Также будет проверяться на mac. Я не использую electron-reload, я использую chokidar напрямую.