Webpack: невозможно назначить только для чтения свойство 'exports' объекта '# <Object>'
Когда я компилировал код из Material Design Boostrap через Webpack, я столкнулся с этой проблемой в консоли Google Chrome:
Uncaught TypeError: Cannot assign to read only property 'exports' of object '#<Object>'
Файлы, которые использовались Webpack для объединения кода:
vendor.js
require('mdbootstrap-pro/css/mdb.css');
require('mdbootstrap');
require('mdbootstrap-pro');
require('jquery');
require('popper.js');
Наряду с jQuery и Popper коды в
mdbootstrap
похож на официальные релизы Bootstrap
webpack.vendor.js
var webpack = require('webpack');
let path = require('path');
let MiniCssExtractPlugin = require('mini-css-extract-plugin');
let TerserJSPlugin = require('terser-webpack-plugin');
let OptimizeCSSAssetsPlugin = require('optimize-css-assets-webpack-plugin');
module.exports = (env = {}, argv) => {
return {
node: {
fs: 'empty',
chart: 'empty',
child_process: 'empty',
net: 'empty',
tls: 'empty',
},
entry: {
'vendor': ['./vendor.js'],
},
output: {
path: path.resolve(__dirname, 'static', 'bundle'),
filename: 'vendor.bundle.js',
},
module: {
rules: [
{
test: /\.css$/,
use: [
MiniCssExtractPlugin.loader,
'css-loader',
]
},
{
test: /\.(jpg|jpeg|png|woff|woff2|eot|ttf|svg|gif)$/,
loader: 'url-loader',
}
],
},
plugins: [
new MiniCssExtractPlugin({
filename: 'vendor.bundle.css',
}),
new webpack.ProvidePlugin({
$: 'jquery',
jQuery: 'jquery',
'window.jQuery': 'jquery',
Popper: ['popper.js', 'default'],
})
],
optimization: {
minimizer: [new TerserJSPlugin({}), new OptimizeCSSAssetsPlugin({})],
},
};
};
package.json
{
"name": "webpack-demo",
"version": "1.0.0",
"description": "",
"private": true,
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC",
"devDependencies": {
"babel-plugin-transform-es2015-modules-commonjs": "^6.26.2",
"url-loader": "^3.0.0",
"webpack": "^4.41.4",
"webpack-cli": "^3.3.10"
},
"dependencies": {
"babel-loader": "^8.0.6",
"bootstrap": "^4.4.1",
"chart.js": "^2.9.3",
"css-loader": "^3.4.0",
"enhanced-resolve": "^4.1.1",
"file-loader": "^5.0.2",
"jquery": "^3.4.1",
"loadash": "^1.0.0",
"lodash": "^4.17.15",
"mdbootstrap": "^4.11.0",
"mdbootstrap-pro": "git+https://oauth2:thequickbrownfoxjumpsoverthelazydog@git.mdbootstrap.com/mdb/jquery/jq-pro.git",
"mini-css-extract-plugin": "^0.9.0",
"optimize-css-assets-webpack-plugin": "^5.0.3",
"popper.js": "^1.16.0",
"resolve-url-loader": "^3.1.1",
"sass-loader": "^8.0.0",
"svg-loader": "0.0.2"
}
}
На самом деле, я просмотрел разные форумы в Github по поводу этой проблемы, и все они в основном предлагали эти вещи, и ни одно из них не сработало:
- использовать
require
вместо тогоimport
какimport
нельзя использовать сmodule.exports
- добавлять
sourceType: 'unambiguous'
в файл конфигурацииInvalid configuration object. Configuration has an unknown property 'sourceType'
Любая помощь (-а) действительно приветствуется.