Все работало нормально до добавления веб-пакета. Вот мой текущий конфиг (ниже) . Внутри login.js есть функция window.onload, а вскоре после нее - функция socket.on, которая теперь нарушает работу программы. Похоже, что «сокет» недоступен другим файлам после добавления веб-пакета.
Вот код ошибки, который я получаю в консоли при запуске моего приложения:
"login.js: 1 Uncaught TypeError: socket.on не является функцией в window.onload (login.js: 1)"
Любая помощь или понимание будут оценены.
webpack.config
const path = require('path')
module.exports = {
entry: {
scripts: './src/scripts.js',
login: './src/login.js'
},
output: {
path: path.resolve(__dirname, 'public/js'),
filename: '[name].js'
},
module: {
rules: [{
test: /\.js$/,
exclude: /node_modules/,
use: {
loader: 'babel-loader',
options: {
presets: ['env']
}
}
}]
},
devServer: {
contentBase: path.resolve(__dirname, 'public'),
publicPath: '/js/'
}
}
Сценарий раздела index.html
<script src="./socket.io/socket.io.js"></script>
<script src="./js/scripts.js"></script>
<script src="./js/login.js"></script>
</body>
Раньше работал нормально, поэтому я не думаю, что здесь есть проблема:
Сервер
const http = require('http').Server(app);
const io = require('socket.io')(http);
Клиент
scripts.js (не в функции, объявлено глобально):
const socket = io();
let socketid;
socket.on('connect', () => socketid = socket.io.engine.id);
login.js (внутри функции window.onload):
socket.on('check email', () => {
setTimeout(() => refreshPage(), 7500);
popupbox({
titletext: 'Verify email', messagetext: 'A verification link has been sent, please verify your email address within 24 hours.',
okaytext: 'Okay', okayfunction: () => refreshPage(),
customcolor: "#007C5B"
});
});