Получение `Uncaught ReferenceError: ввод-вывод не определен` при включении сокета.ввод-вывод включен через webpack

#javascript #socket.io #webpack-4

#javascript #socket.io #webpack-4

Вопрос:

Я использую webpack4 для объединения файлов моего поставщика. Все работает хорошо, и я включил bundle.js файл на моей веб-странице.
Но проблема в том, что я не могу получить доступ к сокету.ввод-вывод из моего js-файла. Я получаю сообщение об ошибке в консоли, как показано ниже:

main.js:276 Неперехваченная ошибка ссылки: ввод-вывод не определена в main.js: 276

Вот мой сокет.код ввода-вывода

 var socket = io().connect();
socket.on('logout', function (data) {
    if (data.includes(userId))
        window.location.href = '/auth/signout';
});
  

Вот мой webpack.config.js файл

 const path = require('path');
const glob = require('glob');
const webpack = require('webpack');

module.exports = {
    target: "web",
    entry: {
        page1: glob.sync('./public/js/vendor/*.js')
    },
    output: {
        path: path.resolve(__dirname, "./public/build"),
        filename: "bundle.js",
    },
    plugins: [
        new webpack.ProvidePlugin({
            $: "jquery",
            jQuery: 'jquery',
            "window.jQuery": 'jquery',
        })
    ],
    module: {
        rules: [
            {test: /modernizr/, loader: 'imports-loader?this=>window!exports-loader?window.Modernizr'},
            {test: path.resolve(__dirname, './public/js/vendor/wow.min.js'), loader: 'imports-loader?this=>window!exports-loader?window.WOW'}
            ]
    },
    resolve: {
        modules: [
            path.resolve(__dirname, "./public/js/vendor")
        ]
    },
    externals: {
        jquery: 'jQuery',
        jspdf: 'jspdf',
        moment: 'moment',
        $: 'jQuery'
    },
    mode: 'development',
    devtool: 'inline-source-map',
};
  

Я не знаю, что я здесь делаю. Я много искал, но не нашел ничего полезного!
Спасибо

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

1. Вам не хватает инициализации ввода-вывода ? « const io = require (‘socket.io ‘)(приложение); «

Ответ №1:

Вам не хватает инициализации ввода-вывода?

 const io = require('socket.io')(app);
  

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

1. Я использую сокет. ввод-вывод на стороне клиента. Мой код хорошо работал до того, как я представил webpack.

2. Я уже проверил это. У меня это не сработало. Я использую интерфейс js. Не какие-либо фреймворки, такие как React / Angular.

3. извините, я не могу поделиться своим репозиторием