У меня есть очень простой пример Webpack 4, где я пытаюсь получить доступ к объекту jQuery в моем файле ввода, чтобы манипулировать DOM. Я сократил это до того, что, как мне кажется, является абсолютным минимумом, который тщательно исследовал.
Я ожидаю, что пример установит голубой цвет фона body
при загрузке страницы. Не могу заставить его сделать что-нибудь. Похоже, переменная $
, представленная в файле ввода, является , а не той же переменной $
в браузере.
ОБНОВЛЕНИЕ - ПРОБЛЕМА РЕШЕНА : я неправильно использовал jQuery
ниже.
Оригинал (дефектный) входной файл (src/app.js
):
import 'jquery';
$(() => {
$('body').bgColor = 'cyan';
});
Исправлено Запись:
import 'jquery';
$(() => {
$('body').css('background-color', 'cyan');
});
Я использую ProvidePlugin
как задокументировано здесь . Вот мой простой webpack.config.js
файл:
const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const webpack = require("webpack");
module.exports = {
entry: {
app: './src/app.js',
},
output: {
filename: 'bundle.js',
path: path.resolve(__dirname, 'dist')
},
plugins: [
new webpack.ProvidePlugin({
$: 'jquery',
jQuery: 'jquery'
}),
new HtmlWebpackPlugin()
],
devtool: 'inline-source-map'
}
Webpack прекрасно компилируется, и страница открывается (с использованием webpack-dev-server
), но цвет фона не меняется на голубой, как ожидалось. Когда я записываю значение $('body')
в файл app.js
, я получаю undefined
.
Вот файл package.json
:
{
"name": "foo",
"version": "1.0.0",
"description": "",
"private": true,
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"build": "webpack",
"start": "webpack-dev-server --inline --open"
},
"keywords": [],
"author": "",
"license": "ISC",
"devDependencies": {
"html-webpack-plugin": "^3.2.0",
"webpack": "^4.16.5",
"webpack-cli": "^3.1.0",
"webpack-dev-server": "^3.1.5"
},
"dependencies": {
"jquery": "^3.3.1"
}
}
Чувствуется, что у меня полное отсутствие понимания того, как это должно работать. Благодарю. Ваша помощь очень ценится.