webpack newbie ici, WebPack CLI m'a dit que j'avais besoin de fournir un alias pour Crypto car WebPack n'inclut plus les bibliothèques de nœuds par défaut. Maintenant, je reçois cette erreur, d'autres réponses n'ont pas beaucoup aidé. Crypto-Browserify essaie d'accéder à process.browser . Quelqu'un peut-il faire plus de lumière? CLI m'a dit d'installer Stream-Browserify aussi j'ai fait.
React V17, Babel 7.12.9, WebPack 5.6.0
webpack.common .js
const webpack = require('webpack');
const { merge } = require('webpack-merge');
const common = require('./webpack.common');
module.exports = merge(common, {
mode: 'development',
// Control how source maps are generated
devtool: 'inline-source-map',
// Spin up a server for quick development
devServer: {
historyApiFallback: true,
contentBase: paths.build,
open: true,
compress: true,
hot: true,
port: 8080,
},
plugins: [
// Only update what has changed on hot reload
new webpack.HotModuleReplacementPlugin(),
],
});
webpack.dev.js
const paths = require('./paths');
const { CleanWebpackPlugin } = require('clean-webpack-plugin');
const CopyWebpackPlugin = require('copy-webpack-plugin');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const dotenv = require('dotenv-webpack');
module.exports = {
entry: [paths.src + '/index.js'],
output: {
path: paths.build,
filename: '[name].bundle.js',
publicPath: '/',
},
plugins: [
new dotenv(),
new CleanWebpackPlugin(),
new CopyWebpackPlugin({
patterns: [
{
from: paths.public,
to: 'assets',
globOptions: {
ignore: ['*.DS_Store'],
},
},
],
}),
new HtmlWebpackPlugin({
title: 'Webpack Boilerplate',
// favicon: paths.src + '/images/favicon.png',
template: paths.src + '/template.html',
filename: 'index.html',
}),
],
resolve: {
fallback: {
crypto: require.resolve('crypto-browserify'),
stream: require.resolve('stream-browserify'),
},
},
module: {
rules: [
// javascript
{
test: /\.js$/,
exclude: /node_modules/,
use: ['babel-loader'],
},
// images
{
test: /\.(?:ico|gif|png|jpg|jpeg)$/i,
type: 'asset/resource',
},
// Fonts and SVGs
{
test: /\.(woff(2)?|eot|ttf|otf|svg|)$/,
type: 'asset/inline',
},
// CSS, PostCSS, and Sass
{
test: /\.(scss|css)$/,
use: [
'style-loader',
{
loader: 'css-loader',
options: {
esModule: true,
sourceMap: true,
importLoaders: 1,
modules: {
auto: true,
namedExport: true,
},
},
},
{ loader: 'postcss-loader', options: { sourceMap: true } },
{ loader: 'sass-loader', options: { sourceMap: true } },
],
},
],
},
};
4 Réponses :
Dans WebPack 5, les polyfills Node.js automatiques sont supprimés. Dans les documents de migration, il est mentionné que
Voir ce problème .
Maintenant Vous pouvez référer ce PRO et vérifier les fimesries qui ont été supprimées et les installer . Ajoutez ensuite alias pour la lib dans votre configuration webpack.
Pour ex.
module.exports = {
...
plugins: [
new webpack.ProvidePlugin({
process: 'process/browser',
}),
],
}
Mise à jour:
Cela peut également être fait à l'aide de providePlugin
pack > Xxx
Installé le processus et essayé et pas encore de chance. Également essayé Fallback: {..., Process: require.resolve ('process') ...} et alias: {process: 'process'}
Merci. webpack.provideplugin fonctionne
J'ai NPM Install Process avec le ProvidePlugin mais je remets le module non trouvé: Erreur: Impossible de résoudre 'Process / Browser'
@Exegesis Assurez-vous de redémarrer le serveur lors de l'installation des dépendances. J'ai également fait le processus Add -D Yarn . Pour vous npm I - Save-Dev Process devrait fonctionner. Bon vieux rm -rf node_modules package-lock.json && npm i devrait également être toujours essayé
Merci! Le ProvidePlugin fonctionne bien.
Il a résolu le processus n'est pas une erreur définie, mais maintenant toute l'application explose et Console dit: `` Le navigateur n'est pas défini ''
Je me demande pourquoi se calmer ne fonctionne pas mais provideplugin
J'ai dû utiliser process / browser.js au lieu de process / navigateur .
Cela peut aider quelqu'un stackoverflow.com/a/68557784/1446006
Merci.It Works. Note après avoir modifié Package.json Exécuter NPM Install.
Si vous obtenez Impossible de trouver le module 'Process / Browser' , vous souhaiterez peut-être installer Node-Libs-Browser
J'ai ce problème pour htmlwebpackplugin, j'ai ajouté le paramètre 'templateParameters' sur htmlwebpackplugin et il a été corrigé pour moi:
new HtmlWebpackPlugin({
baseUrl: '/',
template: 'app/index.html',
templateParameters(compilation, assets, options) {
return {
compilation,
webpack: compilation.getStats().toJson(),
webpackConfig: compilation.options,
htmlWebpackPlugin: {
files: assets,
options,
},
process,
}
},
chunksSortMode: 'auto',
minify: {
collapseWhitespace: false,
},
cache: true,
}),
npm i Process était tout ce dont j'avais besoin.
Cela a peut-être fonctionné pour vous, mais avez-vous des raisons de croire que l'installation de ce package suffit pour résoudre le problème de l'OP?
OP a déclaré que crypto-browserify essaie d'accéder à process.browser , de sorte qu'il n'a peut-être pas installé le package process . A part ça, rien. Nous devons également tenir compte du fait que les personnes ayant un problème similaire seront signalées vers cette question afin que cette réponse puisse également les aider.