问题描述
我最近开始了一个带有电子伪造和 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 (将#修改为@)