#javascript #webpack
#javascript #webpack
Вопрос:
Я пытаюсь перенести свой веб-пакет с версии v4 на версию v5, все прошло нормально, за исключением того, что когда я набрал npm run start’ для текущего сервера, у меня возникла проблема с [Webpack-cli], говорящим:
[webpack-cli] Failed to load 'C:UsersuserDesktopTest_0.3starterwebpack.config.js' config
[webpack-cli] { Error: Cannot find module 'html-webpack-plugin'
at Function.Module._resolveFilename (internal/modules/cjs/loader.js:636:15)
at Function.Module._load (internal/modules/cjs/loader.js:562:25)
at Module.require (internal/modules/cjs/loader.js:692:17)
at require (C:UsersuserDesktopTest_0.3starternode_modulesv8-compile-cachev8-compile-cache.js:159:20)
at Object.<anonymous> (C:UsersuserDesktopTest_0.3starterwebpack.config.js:2:25)
at Module._compile (C:UsersuserDesktopTest_0.3starternode_modulesv8-compile-cachev8-compile-cache.js:192:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
at Module.load (internal/modules/cjs/loader.js:653:32)
at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
at Function.Module._load (internal/modules/cjs/loader.js:585:3) code: 'MODULE_NOT_FOUND' }
вот моя package.json
папка:
{
"name": "starter",
"version": "1.0.0",
"description": "",
"main": "index.js",
"dependencies": {
"live-server": "^1.2.1"
},
"devDependencies": {
"html-webpack-plugin": "^5.1.0",
"webpack": "^5.22.0",
"webpack-cli": "^4.5.0",
"webpack-dev-server": "^3.11.2"
},
"scripts": {
"dev": "webpack --mode development",
"build": "webpack --mode production",
"start": "webpack serve --mode development --open"
},
"author": "",
"license": "ISC"
}
the webpack.config.js
const path= require('path')
const htmlWebpackPlugin=require('html-webpack-plugin');
module.exports={
entry: './src/js/index.js',
output:{
path:path.resolve(__dirname, 'dist'),
filename:'js/bundle.js'
},
devServer:{
contentBase: './dist'
},
plugins:[
new HtmlWebpackPlugin({
filename:'index.html',
template:'./src/index.html'
})
]
}
также у меня есть другая проблема, которая webpack-cli
не может найти html-webpack-plugin
, хотя она установлена, как вы видите
заранее спасибо за помощь
Я ценю это
Комментарии:
1. Прочитайте с пониманием.
[webpack-cli] {Error: Cannot find module 'html-webpack-plugin'
Т. Е. библиотека, которая у вас есть в webpack, отсутствует. Установите его. И он не установлен, у вас есть только это"devDependencies": { "webpack": "^ 5.22.0", "webpack-cli": "^ 4.5.0", "webpack-dev-server": "^ 3.11.2" },
, я не вижу здесь html-webpack-plugin2. @GrzegorzT. не сработало. кстати, я много экспериментировал, прежде чем опубликовать вопрос, и это привело к тому, что я обновил пакет.в json отсутствует ‘html-webpack-plugin’, извините, я это исправил
3. Удалите папку node-modules и переустановите все и покажите конфигурацию webpack
4. @GrzegorzT. хотя я пробовал и не работал, но я сделаю это снова, и давайте посмотрим, что произойдет
5. Я обнаружил, что у вас опечатка 🙂 Вы объявили
htmlWebpackPlugin
, но используетеHtmlWebpackPlugin
🙂 Это должно поймать вашу IDE.
Ответ №1:
Вы пытались обновить версию своего узла до версии <13? Это должно помочь!
Ответ №2:
Я тоже пробовал это, но я думаю, что мы что-то неправильно поняли в документации, потому что я столкнулся с той же ошибкой, что и вы. : D Я использую Linux.
я думаю, что эта часть вызывает ошибку в вашей конфигурации:
"dev": "webpack --mode development",
"build": "webpack --mode production",
"start": "webpack serve --mode development --open"
С «—mode development» или «—mode= development», «—mode =’development'» и т. Д. У меня тоже не получилось.
Вот мой стартер (он еще не готов, но работает, надеюсь, это поможет вам начать).
package.json
{
"name": "xxxxxx",
"version": "1.0.0",
"description": "",
"private": "true",
"scripts": {
"start": "webpack serve --open 'google-chrome'",
"watch": "webpack --watch",
"prod": "NODE_ENV=production webpack",
"dev": "webpack"
},
"keywords": [],
"author": "",
"license": "ISC",
"devDependencies": {
"@babel/core": "^7.12.17",
"@babel/preset-env": "^7.12.17",
"babel-loader": "^8.2.2",
"clean-webpack-plugin": "^3.0.0",
"compression-webpack-plugin": "^7.1.2",
"css-loader": "^5.0.2",
"html-webpack-plugin": "^5.2.0",
"mini-css-extract-plugin": "^1.3.8",
"postcss": "^8.2.6",
"postcss-loader": "^5.0.0",
"postcss-preset-env": "^6.7.0",
"sass": "^1.32.8",
"sass-loader": "^11.0.1",
"webpack": "^5.23.0",
"webpack-cli": "^4.5.0",
"webpack-dev-server": "^3.11.2"
},
"dependencies": {
"sanitize.css": "^12.0.1"
}
}
webpack.config.js
// PATH
const path = require("path");
const SRC_DIR = path.resolve(__dirname, "./src");
const DIST_DIR = path.resolve(__dirname, "./dist");
// PLUGIN
const HtmlWebpackPlugin = require("html-webpack-plugin");
const { CleanWebpackPlugin } = require("clean-webpack-plugin");
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
// OTHER ! TODO: const devMode = process.env.NODE_ENV !== 'production';...
let mode = "development";
/**
* ! Fix for:
* ! [webpack v5] Error: Universal Chunk Loading is not implemented yet #11660
* ! https://github.com/webpack/webpack/issues/11660
* ! chunkLoading: false,
* ! wasmLoading: false,
*/
var target = "web";
if (process.env.NODE_ENV === "production") {
mode = "production";
}
module.exports = {
mode: mode,
entry: {
index: SRC_DIR "/index.js",
},
output: {
path: DIST_DIR,
//assetModuleFilename: "images/[name][ext][query]",
chunkLoading: false,
wasmLoading: false,
},
module: {
rules: [
{
test: /.js$/,
exclude: /node_modules/,
use: {
loader: "babel-loader",
},
},
{
// For pure CSS - /.css$/i,
// For Sass/SCSS - /.((c|sa|sc)ss)$/i,
// For Less - /.((c|le)ss)$/i,
test: /.((c|sa|sc)ss)$/i,
use: [
MiniCssExtractPlugin.loader,
"css-loader",
"postcss-loader",
"sass-loader",
],
},
/*{
test: /.(png|jpe?g|gif|svg|eot|ttf|woff|woff2)$/i,
// More information here https://webpack.js.org/guides/asset-modules/
type: "asset",
},*/
],
},
devtool: "source-map",
target: target,
devServer: {
contentBase: "./dist",
hot: true,
},
plugins: [
// Automatically remove all unused webpack assets on rebuild
// default: true
new CleanWebpackPlugin({ cleanStaleWebpackAssets: false }),
/*new CleanWebpackPlugin(),*/
new MiniCssExtractPlugin(),
new HtmlWebpackPlugin({
template: SRC_DIR "/index.html",
}),
],
};
Br: Zsolt
=== Отредактировано ===
$ npx webpack --help=verbose | grep NODE_ENV
--node-env <value> Sets process.env.NODE_ENV to the specified value
--optimization-node-env <value> Set process.env.NODE_ENV to a specific value.
$ npx webpack --help=verbose | grep mode
The build tool for modern web applications.
--mode <value> Defines the mode to pass to webpack.
https://nodejs.org/docs/latest-v14.x/api/all.html#process_process_env
Моя система:
System:
OS: Linux 5.4
Binaries:
Node: 14.15.5 - ~/.nvm/versions/node/v14.15.5/bin/node
npm: 7.5.3 - ~/.nvm/versions/node/v14.15.5/bin/npm
Packages:
clean-webpack-plugin: ^3.0.0 => 3.0.0
compression-webpack-plugin: ^7.1.2 => 7.1.2
html-webpack-plugin: ^5.2.0 => 5.2.0
webpack: ^5.23.0 => 5.23.0
webpack-cli: ^4.5.0 => 4.5.0
webpack-dev-server: ^3.11.2 => 3.11.2
Или вы можете сделать это, чтобы:
"scripts": {
"start": "webpack serve --config=config/webpack.dev.js",
"prod": "webpack --config=config/webpack.prod.js",
...
}