j'essaie de prévisualiser une application web vue via webpack-server-dev.Je suis ce guide https://medium.com/the-web-tub/ création-de-votre-première-vue-js-pwa-project-22f7c552fb34
Le guide explique que le plugin est utilisé pour supprimer les fichiers anciens et inutilisés dans le répertoire dist. J'ai déjà essayé de remplacer const CleanWebpackPlugin = require('clean-webpack-plugin')
par const { CleanWebpackPlugin } = require('clean-webpack-plugin')
ce que certains articles suggèrent. j'ai également essayé de regarder la documentation sur https://github.com/johnagan/clean-webpack-plugin mais sans succès car je suis assez nouveau dans ce domaine.
quand j'essaie de npm run dev
je reçois cette erreur
new CleanWebpackPlugin(['dist']),
^
TypeError: CleanWebpackPlugin is not a constructor
at module.exports (C:\Users\Eson\Desktop\pwa-vue-app-1\webpack.config.js:56:5)
at handleFunction (C:\Users\Eson\Desktop\pwa-vue-app-1\node_modules\webpack-cli\bin\utils\prepareOptions.js:21:13)
at prepareOptions (C:\Users\Eson\Desktop\pwa-vue-app-1\node_modules\webpack-cli\bin\utils\prepareOptions.js:9:5)
at requireConfig (C:\Users\Eson\Desktop\pwa-vue-app-1\node_modules\webpack-cli\bin\utils\convert-argv.js:119:14)
at C:\Users\Eson\Desktop\pwa-vue-app-1\node_modules\webpack-cli\bin\utils\convert-argv.js:125:17
at Array.forEach (<anonymous>)
at module.exports (C:\Users\Eson\Desktop\pwa-vue-app-1\node_modules\webpack-cli\bin\utils\convert-argv.js:123:15)
at Object.<anonymous> (C:\Users\Eson\Desktop\pwa-vue-app-1\node_modules\webpack-dev-server\bin\webpack-dev-server.js:79:40)
at Module._compile (internal/modules/cjs/loader.js:776:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:787: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)
at Function.Module.runMain (internal/modules/cjs/loader.js:829:12)
at startup (internal/bootstrap/node.js:283:19)
at bootstrapNodeJSCore (internal/bootstrap/node.js:622:3)
et ceci est le fichier webpack.config.js
const path = require('path')
const { VueLoaderPlugin } = require('vue-loader')
const HtmlWebpackPlugin = require('html-webpack-plugin')
const CopyWebpackPlugin = require('copy-webpack-plugin')
const CleanWebpackPlugin = require('clean-webpack-plugin')
module.exports = (env, argv) => ({
mode: argv && argv.mode || 'development',
devtool: (argv && argv.mode || 'development') === 'production' ? 'source-map' : 'eval',
entry: './src/app.js',
output: {
path: path.resolve(__dirname, 'dist'),
filename: '[name].js'
},
node: false,
module: {
rules: [
{
test: /\.vue$/,
loader: 'vue-loader'
},
{
test: /\.js$/,
loader: 'babel-loader'
},
{
test: /\.css$/,
use: [
'vue-style-loader',
'css-loader'
],
exclude: /\.module\.css$/
}
]
},
resolve: {
extensions: [
'.js',
'.vue',
'.json'
],
alias: {
'vue$': 'vue/dist/vue.esm.js',
'@': path.resolve(__dirname, 'src')
}
},
plugins: [
new CleanWebpackPlugin(['dist']),
new VueLoaderPlugin(),
new HtmlWebpackPlugin({
template: path.resolve(__dirname, 'static', 'index.html'),
inject: true
}),
new CopyWebpackPlugin([{
from: path.resolve(__dirname, 'static'),
to: path.resolve(__dirname, 'dist'),
toType: 'dir'
}])
],
optimization: {
splitChunks: {
chunks: 'all',
minSize: 30000,
maxSize: 0,
cacheGroups: {
vendors: {
test: /[\\/]node_modules[\\/]/,
priority: -10
},
default: {
minChunks: 2,
priority: -20,
reuseExistingChunk: true
}
}
},
runtimeChunk: {
name: entrypoint => `runtime~${entrypoint.name}`
},
mangleWasmImports: true,
removeAvailableModules: true,
removeEmptyChunks: true,
mergeDuplicateChunks: true
},
devServer: {
compress: true,
Host: 'localhost',
https: true,
open: true,
overlay: true,
port: 9000
}
});
c'est l'erreur que j'obtiens lors de l'utilisation de la bonne importation comme expliqué dans la documentation:
throw new Error(`clean-webpack-plugin only accepts an options object. See:
^
Error: clean-webpack-plugin only accepts an options object. See:
https://github.com/johnagan/clean-webpack-plugin#options-and-defaults-optional
at new CleanWebpackPlugin (C:\Users\Eson\Desktop\pwa-vue-app-1\node_modules\clean-webpack-plugin\dist\clean-webpack-plugin.js:27:13)
at module.exports (C:\Users\Eson\Desktop\pwa-vue-app-1\webpack.config.js:56:5)
at handleFunction (C:\Users\Eson\Desktop\pwa-vue-app-1\node_modules\webpack-cli\bin\utils\prepareOptions.js:21:13)
at prepareOptions (C:\Users\Eson\Desktop\pwa-vue-app-1\node_modules\webpack-cli\bin\utils\prepareOptions.js:9:5)
at requireConfig (C:\Users\Eson\Desktop\pwa-vue-app-1\node_modules\webpack-cli\bin\utils\convert-argv.js:119:14)
at C:\Users\Eson\Desktop\pwa-vue-app-1\node_modules\webpack-cli\bin\utils\convert-argv.js:125:17
at Array.forEach (<anonymous>)
at module.exports (C:\Users\Eson\Desktop\pwa-vue-app-1\node_modules\webpack-cli\bin\utils\convert-argv.js:123:15)
at Object.<anonymous> (C:\Users\Eson\Desktop\pwa-vue-app-1\node_modules\webpack-dev-server\bin\webpack-dev-server.js:79:40)
at Module._compile (internal/modules/cjs/loader.js:776:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:787: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)
at Function.Module.runMain (internal/modules/cjs/loader.js:829:12)
at startup (internal/bootstrap/node.js:283:19)
si je supprime la ligne 56 dans webpack.config.js, je peux exécuter l'application Web sans problème, mais je veux comprendre la source de ce problème
La bonne consiste à utiliser cette importation:
const { CleanWebpackPlugin } = require('clean-webpack-plugin');`
Et puis au lieu de passer un tableau avec le dossier de distribution, changez-le en
plugins: [
new CleanWebpackPlugin(),
//...
]
J'ai eu le même problème et je l'ai résolu de la manière suivante:
const { CleanWebpackPlugin } = require('clean-webpack-plugin');
plugins: [
new CleanWebpackPlugin({
cleanAfterEveryBuildPatterns: ['dist']
})
]
Avec la mise à jour, vous devrez procéder comme suit pour l'inclure
const { CleanWebpackPlugin } = require('clean-webpack-plugin');
Ensuite, dans le tableau des plugins remplacer, ajoutez ce qui suit
plugins: [
new CleanWebpackPlugin(['dist]),
]
avec
plugins: [
new CleanWebpackPlugin(),
]
Comme avec la mise à jour, il n'est pas nécessaire de passer de paramètres car il supprimera tous les fichiers du répertoire output.path
Du webpack, ainsi que tous les actifs du webpack inutilisés après chaque reconstruction réussie.
J'ai eu le même problème aujourd'hui, en ce moment. Comme vous pouvez le constater, il y avait un décalage entre les documents et le code réel. Et en fait, vous pouvez voir dans le dernier commit qu'ils ont fusionné à la fois dans la documentation:
et aussi au code:
Je viens donc de passer de const CleanWebpackPlugin = require('clean-webpack-plugin')
à
const { CleanWebpackPlugin } = require('clean-webpack-plugin');
et ça marche bien.
Je pense que vous avez peut-être été pris entre deux choses. Réinstallez le package npm et réessayez, cela devrait fonctionner.
J'ai écrit un peu de ce que vous pouvez voir dans leur référentiel public car très souvent, lorsque des changements soudains comme celui-ci se produisent, vous trouverez votre propre réponse dans le référentiel , probablement dans les derniers commits. Et c'est une bonne lecture d'un peu du code que vous utilisez, surtout si cela vous aide à résoudre votre problème :)
Pour ceux qui trouvent cette erreur avec les mises à jour récentes de nativescript-vue , je l'ai corrigé en changeant webpack.config.js
(fichier de niveau supérieur dans le dossier de l'application). Comme ci-dessus, il reflète maintenant la syntaxe du CleanWebpackPlugin docs .
//const CleanWebpackPlugin = require("clean-webpack-plugin");
const { CleanWebpackPlugin } = require('clean-webpack-plugin');
et
//new CleanWebpackPlugin(itemsToClean, { verbose: !!verbose }),
new CleanWebpackPlugin(),
Je ne connais pas très bien le webpack et je l'apprends actuellement
bien que cette chose ci-dessous m'a aidé à résoudre le problème
Je viens de désinstaller le plugin clean-webpack puis de réinstaller en tant que dépendance avant cela, je l'ai installé en tant que dépendance de développement
après avoir désinstallé et installé comme ça: npm install --save clean-webpack-plugin
et en ajoutant ceci
const { CleanWebpackPlugin } = require("clean-webpack-plugin");
résolu mon problème !!
j'espère que ça aide
CleanWebpackPlugin v3.0.0
Exportation par défaut remplacée par l'export nommé CleanWebpackPlugin
[ https://github.com/johnagan/clean-webpack-plugin/releases/tag/v3.0.0]
le bon code est:
// es modules
import { CleanWebpackPlugin } from 'clean-webpack-plugin';
// common js
const { CleanWebpackPlugin } = require('clean-webpack-plugin');