导入“事件”时,带有 Webpack 的 Electron Forge 获取“未定义要求”

问题描述

我最近开始了一个带有电子伪造和 webpack 模板的新项目。我正在创建一个用于身份验证的简单类,并希望在 nodejs 中使用事件系统。我正在使用导入语法,但收到一个错误,指出需要未定义。我不想打开 nodeIntegration,我认为 webpack 会自动使用 nodejs 事件系统的 browserfy 版本:

您通常不必自己安装事件!如果您的代码在 Node.js 中运行,则事件是内置的。如果您的代码在浏览器中运行,browserify 或 webpack 之类的捆绑程序也包含事件模块。

安装 browserify 事件模块也不能解决问题。我还尝试排除 node_modules/events 文件夹以希望 webpack 使用自己的事件模块,但这对我不起作用。这是我的代码:

import { EventEmitter } from 'events';

export default class Auth {
  constructor(socket) {
  }

  setToken(token) {
    this.token = token;
    localStorage.setItem('token',token);
    this.emit('token',token);
  }

  checkToken() {
    if(localStorage.getItem("token") !== null) {
      this.setToken(localStorage.getItem("token"));
    } else {
      this.emit('false',false);
    }
  }

  getToken() {
    return localStorage.getItem("token");
  }

  setAuth(auth) {
    this.emit('auth',auth);
    this.isAuth = auth;
  }
  
}

这是我的 webpack 渲染器配置:

const rules = require('./webpack.rules');
const webpack = require('webpack');
const path = require('path');
const CopyWebpackPlugin = require('copy-webpack-plugin');

rules.push({
  test: /\.css$/,use: [{ loader: 'style-loader' },{ loader: 'css-loader' }],});

const assets = [ 'assets' ];
const copyPlugins = assets.map((asset) => {
  return new CopyWebpackPlugin({
    patterns: [{ from: path.resolve(__dirname,'src/renderer/',asset),to: asset }],});
});

module.exports = {
  // Put your normal webpack config below here
  module: {
    rules,},plugins: [
      new webpack.ProvidePlugin({
          $: 'jquery',}),...copyPlugins
  ],resolve: {
    alias: {
      'components': path.resolve(__dirname,'./src/renderer/components'),'pages': path.resolve(__dirname,'./src/renderer/pages'),'core': path.resolve(__dirname,'./src/renderer/core'),extensions: ['.js']
  },};

这是我的 webpack 规则配置:

module.exports = [
  // Add support for native node modules
  {
    test: /\.node$/,use: 'node-loader',{
    test: /\.(m?js|node)$/,parser: { amd: false },use: {
      loader: '@marshallofsound/webpack-asset-relocator-loader',options: {
        outputAssetBase: 'native_modules',];

这里是错误:

external "events":
Uncaught ReferenceError: require is not defined
    at Object.events (external "events":1)
    at __webpack_require__ (bootstrap:832)
    at fn (bootstrap:129)
    at Module../src/renderer/core/Auth.js (Auth.js:1)
    at __webpack_require__ (bootstrap:832)
    at fn (bootstrap:129)
    at Module../src/renderer/index.js (index.js:1)
    at __webpack_require__ (bootstrap:832)
    at fn (bootstrap:129)
    at Object.0 (routes.js:40)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)