webpack angular datatables - angularjs

I have a problem with webpack and angularjs datatables.
I get the following error:
Error: Cannot find module "./dist/plugins/bootstrap/datatables.bootstrap.css"
Here is my configuration:
Hier is my Webpack configuration:
Please let me know if I need to configure here something other.
var path = require('path');
var webpack = require('webpack');
var ChunkManifestPlugin = require('chunk-manifest-webpack-plugin');
var contextDirectory = path.resolve(__dirname, 'src');
var targetDirectory = path.resolve(__dirname, 'target');
var distDirectory = path.resolve(targetDirectory, 'dist');
var HtmlWebpackPlugin = require('html-webpack-plugin');
var NgAnnotatePlugin = require('ng-annotate-webpack-plugin');
var config = {
context: path.resolve(contextDirectory, 'app'),
entry: {
app: './index.js',
vendor: './vendor.js'
}
//app: ['webpack/hot/dev-server', './index.js']
,
output: {
path: distDirectory,
filename: 'app.js'
},
module: {
loaders: [
{test: /\.js$/, loaders: ['ng-annotate', 'babel', 'eslint'], include: contextDirectory},
{test: /\.html$/, loader: 'raw', include: contextDirectory},
{test: /\.json$/, loader: 'json', include: contextDirectory},
{test: /\.css$/, loaders: ['style', 'css'], include: contextDirectory},
{test: /\.scss$/, loaders: ['style', 'css', 'sass'], include: contextDirectory},
{test: /(\.(?:eot|woff|woff2|ttf))/, loader: 'file?name=font/[name]-[hash].[ext]'},
{test: /\.(jpe?g|png|gif|svg)$/, loader: 'file?name=[path][name].[ext]'}
]
},
plugins: [
new webpack.ProvidePlugin({
$: "jquery",
jQuery: "jquery"
}),
new webpack.DefinePlugin({
ON_TEST: process.env.NODE_ENV === 'test'
}),
new HtmlWebpackPlugin({
template: path.resolve(contextDirectory, 'index.html'),
inject: false
}),
new webpack.HotModuleReplacementPlugin(),
new ChunkManifestPlugin({
filename: "chunk-manifest.json",
manifestVariable: "webpackManifest"
})
],
devServer: {
contentBase: path.resolve(contextDirectory),
proxy: {
'/rest/*': {
target: 'http://localhost:8080/tsportal/',
changeOrigin: true
}
}
},
debug: true,
devtool: 'inline-source-map',
eslint: {
configFiles: path.resolve(contextDirectory, '.eslintrc')
}
};
if (process.env.NODE_ENV !== 'test') {
config.plugins.push(new webpack.optimize.CommonsChunkPlugin(
/* chunkName= */"vendor",
/* filename= */"vendor.js"
));
}
if (process.env.NODE_ENV === 'prod') {
config.output.path = distDirectory;
config.plugins.push(new NgAnnotatePlugin({add: true}));
config.plugins.push(new webpack.optimize.UglifyJsPlugin({comments: false}));
config.devtool = 'source-map';
}
module.exports = config;
Here is my vendor.js file
Please let me know if I need to configure here something other.
require('jquery');
require('datatables');
require('angular');
require('angular-route');
require('angular-sanitize');
require('angular-translate');
require('angular-translate-loader-static-files');
require('angular-ui-bootstrap');
require('ng-lodash');
require('angular-datatables');
Here is my file package.json:
Please let me know if I need to configure here something other.
{
"name": "tsPortalClient",
"version": "0.0.1",
"description": "Ts Portal Client Single Page App",
"scripts": {
"serve": "better-npm-run serve",
"test": "better-npm-run test",
"test-single": "better-npm-run test:single",
"build": "better-npm-run build:dist"
},
"betterScripts": {
"build:dist": {
"command": "npm i && trash target/dist && webpack --colors",
"env": {
"NODE_ENV": "prod"
}
},
"serve": {
"command": "webpack-dev-server --port 3000"
},
"test": {
"command": "karma start",
"env": {
"NODE_ENV": "test"
}
},
"test:single": {
"command": "karma start --single-run",
"env": {
"NODE_ENV": "test"
}
}
},
"devDependencies": {
"angular-mocks": "^1.4.8",
"babel-core": "^6.4.0",
"babel-loader": "^6.2.1",
"babel-preset-es2015": "^6.3.13",
"better-npm-run": "~0.0.1",
"bootstrap-sass": "^3.3.6",
"chunk-manifest-webpack-plugin": "0.0.1",
"css-loader": "^0.23.1",
"eslint": "1.10.3",
"eslint-loader": "^1.3.0",
"eslint-plugin-babel": "^3.1.0",
"html-webpack-plugin": "^1.6.0",
"json-loader": "^0.5.4",
"karma": "^0.13.19",
"karma-chrome-launcher": "^0.2.2",
"karma-coverage": "^0.5.3",
"karma-jasmine": "^0.3.6",
"karma-phantomjs-launcher": "^0.2.3",
"karma-sourcemap-loader": "~0.3",
"karma-spec-reporter": "0.0.23",
"karma-webpack": "^1.7.0",
"ng-annotate-loader": "^0.1.0",
"ng-annotate-webpack-plugin": "0.1.2",
"node-sass": "^3.4.2",
"phantomjs": "^1.9.19",
"phantomjs-polyfill": "0.0.1",
"raw-loader": "^0.5.1",
"sass-loader": "^3.1.2",
"style-loader": "0.13.0",
"trash-cli": "1.2.0",
"url-loader": "^0.5.7",
"webpack": "^1.12.11",
"webpack-dev-server": "1.14.0"
},
"dependencies": {
"angular": "^1.4.8",
"angular-crumble": "^0.2.1",
"angular-route": "^1.4.8",
"angular-sanitize": "^1.4.8",
"angular-translate": "^2.8.1",
"angular-translate-loader-static-files": "^2.8.1",
"angular-ui-bootstrap": "^1.1.0",
"jquery": "^2.2.0",
"ng-file-upload": "^11.2.3",
"ng-lodash": "^0.2.3"
},
"browser": {
"languages": "./src/assets/language/index.js"
},
"engines": {
"node": ">=0.10.0"
}
}

Did you actually intend to include that bootstrap css?
Maybe you should not specify the include property in your CSS and SCSS loader section and let Webpack find it in the place you had required it. So do the follows for these two:
{test: /\.css$/, loaders: ['style', 'css']} ,
{test: /\.scss$/, loaders: ['style', 'css', 'sass']}
I usually use include just for my .js files.

Related

How to remove source maps from webpack 5 #React.js #webpack 5

The common solution for removing source maps from a CRA build is to add "GENERATE_SOURCEMAPS=false react-scripts build" in package.json build scripts and/or "GENERATE_SOURCEMAPS=false" in the CRA .env file. However, I do not use Create React App. Therefore, "react-scripts build" is not recognized as an internal command, my .env file has no effect on the bundled code, and simply adding "GENERATE_SOURCEMAPS=false" to my build scripts does nothing. I would like to remove source maps from the webpack bundle. Here is my package.json.
{
"name": "reactboilerplate",
"version": "1.0.0",
"description": "boilerplate code",
"main": "index.js",
"presets":
[
"#babel/preset-env",
"#babel/preset-react"
],
"scripts":
{
"build": "cross-env GENERATE_SOURCEMAP=false webpack --watch",
"start": "webpack serve",
"build-prod": "weback -p",
"winBuild": "set \"GENERATE_SOURCEMAP=false\" && build"
},
"keywords": [],
"author": "ziggy",
"license": "NONE",
"devDependencies":
{
"#babel/core": "^7.16.7",
"#babel/preset-env": "^7.16.8",
"#babel/preset-react": "^7.16.7",
"babel-loader": "^8.2.3",
"css-loader": "^6.5.1",
"file-loader": "^6.2.0",
"html-loader": "^3.1.0",
"html-webpack-plugin": "^5.5.0",
"node-polyfill-webpack-plugin": "^1.1.4",
"style-loader": "^3.3.1",
"webpack": "^5.66.0",
"webpack-cli": "^4.9.1",
"webpack-dev-server": "^4.7.3"
},
"dependencies":
{
"#aws-amplify/ui-react": "^2.1.9",
"aws-amplify": "^4.3.12",
"aws-amplify-react": "^5.1.9",
"bootstrap": "^5.1.3",
"pandadoc-node-client": "^4.1.0",
"react": "^17.0.2",
"react-bootstrap": "^2.1.1",
"react-dom": "^17.0.2",
"typewriter-effect": "^2.18.2"
}
}
Here is my webpack.config.js
const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const webpack = require('webpack');
const NodePolyfillPlugin = require('node-polyfill-webpack-plugin');
module.exports = {
mode: 'development',
entry: './src/index.js',
output:
{
path: path.resolve(__dirname, 'dist'),
filename: 'bundle.js',
},
resolve:
{
modules: [path.join(__dirname, 'src'), 'node_modules'],
alias: { react: path.join(__dirname, 'node_modules', 'react') }
},
plugins:
[
new NodePolyfillPlugin(),
new HtmlWebpackPlugin({ template: './src/index.html' }),
],
module:
{
rules: [
{
test: /\.css/i,
use: ['style-loader', 'css-loader']
},
{
test: /\.js$/,
exclude: /node_modules/,
use:
{
loader: "babel-loader",
options:
{
presets: ['#babel/preset-env', '#babel/preset-react']
}
}
},
{
test: /\.(png|mp4)$/i,
type: "asset/resource"
},
{
test: /\.txt$/i,
type: 'asset/source'
},
{
test: /\.(woff|woff2|ttf)$/i,
type: "asset/resource"
},
{
test: /\.html$/,
use: ["html-loader"]
},
{
test: /\.(mov|mp4)$/,
use:
[
{
loader: 'file-loader',
options:
{
name: '[name].[ext]'
}
}
]
},
{
test: /\.m?js/,
resolve:
{
fullySpecified: false
}
},
]
}
}

./components/Avatar.tsx Error: Cannot find module '#babel/preset-stage-0'

After a few hours of research, I still haven't solved an issue I've been having with Babel and Webpack. ): I'm sure the solution is simple.
My .babelrc:
{
"presets": ["#babel/preset-env", "#babel/preset-react", "#babel/preset-stage-0"]
}
My package.json
{
"name": "sabrinasbase",
"version": "0.1.0",
"private": true,
"scripts": {
"dev": "next dev",
"build": "next build",
"start": "next start"
},
"dependencies": {
"chokidar": "^3.5.1",
"css-modules-typescript-loader": "^4.0.1",
"next": "10.0.5",
"react": "17.0.1",
"react-dom": "17.0.1",
"react-particles-js": "^3.4.1",
"react-tsparticles": "^1.18.11",
"sass": "^1.32.5",
"three": "^0.124.0"
},
"devDependencies": {
"#babel/cli": "^7.12.10",
"#babel/core": "^7.12.10",
"#babel/preset-env": "^7.12.11",
"#babel/preset-react": "^7.12.10",
"#babel/preset-stage-0": "^7.8.3",
"#babel/register": "^7.12.10",
"#types/node": "^14.14.22",
"#types/react": "^17.0.0",
"babel-loader": "^8.2.2",
"typescript": "^4.1.3",
"url-loader": "^4.1.1",
"webpack": "^5.16.0",
"webpack-cli": "^4.4.0",
"webpack-dev-middleware": "^1.2.0",
"webpack-hot-middleware": "^2.0.0"
},
"resolutions": {
"#babel/core": "^7.12.10"
}
}
My webpack.config.js
var path = require("path");
module.exports = {
//mode: "production",
mode: "development",
devtool: "inline-source-map",
context: path.join(__dirname, "pages"),
entry: ["/_app.js" /*main*/],
output: {
filename: "./bundle.js", // in /dist
},
resolve: {
// Add `.ts` and `.tsx` as a resolvable extension.
extensions: [".ts", ".tsx", ".js", ".css", ".scss"],
},
module: {
rules: [
{ test: /\.tsx?$/, loader: "ts-loader" },
{
test: /\.scss$/,
use: [
{ loader: "style-loader" }, // to inject the result into the DOM as a style block
{ loader: "css-modules-typescript-loader" }, // to generate a .d.ts module next to the .scss file (also requires a declaration.d.ts with "declare modules '*.scss';" in it to tell TypeScript that "import styles from './styles.scss';" means to load the module "./styles.scss.d.td")
{ loader: "css-loader", options: { modules: true } }, // to convert the resulting CSS to Javascript to be bundled (modules:true to rename CSS classes in output to cryptic identifiers, except if wrapped in a :global(...) pseudo class)
{ loader: "sass-loader" }, // to convert SASS to CSS
// NOTE: The first build after adding/removing/renaming CSS classes fails, since the newly generated .d.ts typescript module is picked up only later
],
},
{
test: /\.png|jpg|gif$/i,
use: [
{
loader: "url-loader",
options: {
limit: 8192,
},
},
],
},
{ test: /\.js|tsx|ts$/, loader: "babel-loader", exclude: /node_modules/ },
],
},
};
All I want to do is import a picture into a component. Originally I was getting Plugin/Preset files are not allowed to export objects, only functions error, but now I am getting vaguer errors that the module isn't working correctly. There were a few times that the Webpack would compile successfully, but the file I wanted to use wouldn't. Is there anything I am missing? I promise I am installing the preset-stage-0 package.
Error: Cannot find module '#babel/preset-stage-0'
Require stack:
- C:\Users\Sabri\Documents\GitHub\sabrinasbase\sabrinasbase\node_modules\next\dist\compiled\babel\bundle.js
- C:\Users\Sabri\Documents\GitHub\sabrinasbase\sabrinasbase\node_modules\next\dist\compiled\babel\code-frame.js
- C:\Users\Sabri\Documents\GitHub\sabrinasbase\sabrinasbase\node_modules\next\dist\lib\typescript\diagnosticFormatter.js
- C:\Users\Sabri\Documents\GitHub\sabrinasbase\sabrinasbase\node_modules\next\dist\lib\typescript\runTypeCheck.js
- C:\Users\Sabri\Documents\GitHub\sabrinasbase\sabrinasbase\node_modules\next\dist\lib\verifyTypeScriptSetup.js
- C:\Users\Sabri\Documents\GitHub\sabrinasbase\sabrinasbase\node_modules\next\dist\server\next-dev-server.js
- C:\Users\Sabri\Documents\GitHub\sabrinasbase\sabrinasbase\node_modules\next\dist\server\next.js
- C:\Users\Sabri\Documents\GitHub\sabrinasbase\sabrinasbase\node_modules\next\dist\server\lib\start-server.js
- C:\Users\Sabri\Documents\GitHub\sabrinasbase\sabrinasbase\node_modules\next\dist\cli\next-dev.js
- C:\Users\Sabri\Documents\GitHub\sabrinasbase\sabrinasbase\node_modules\next\dist\bin\next
at Array.map (<anonymous>)
at Generator.next (<anonymous>)
at loadFileChain.next (<anonymous>)
Not sure why you are getting this error
Here is my webpack which works as expected
Also, apologies in advance as I have done heck load of optimization to reduce bundle size
Webpack.config.base.js
const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
const webpack = require('webpack');
const CopyPlugin = require("copy-webpack-plugin");
const ServiceWorkerWebpackPlugin = require('serviceworker-webpack-plugin');
const {WebpackManifestPlugin} = require('webpack-manifest-plugin');
const ESLintPlugin = require('eslint-webpack-plugin');
const PurifyCssPlugin = require('purifycss-webpack');
const glob = require("glob");
module.exports = {
target: 'web',
stats: 'verbose',
output: {
path: __dirname + '/dist',
filename: '[name].[hash].bundle.js'
},
resolve: {
extensions: ['.js', '.jsx']
},
module: {
rules: [
{
test: /\.(js|jsx)$/,
exclude: /node_modules/,
use: {
loader: "babel-loader"
}
},
{
test: /\.html$/,
use: [
{
loader: "html-loader"
}
]
},
{
test: /\.css$/,
use: [{
loader: MiniCssExtractPlugin.loader,
options: {
publicPath: './'
}
}, 'css-loader']
},
{
test: /\.scss$/,
use: [{
loader: MiniCssExtractPlugin.loader,
options: {
publicPath: './'
}
}, 'css-loader', 'sass-loader']
},
{
test: /\.(png|svg|jpg|gif)$/,
use: [
'file-loader',
{
loader: 'image-webpack-loader',
options: {
bypassOnDebug: true, // webpack#1.x
disable: true, // webpack#2.x and newer
mozjpeg: {
progressive: true,
},
optipng: {
enabled: false,
},
pngquant: {
quality: [0.65, 0.90],
speed: 4
},
gifsicle: {
interlaced: false,
},
},
}
]
}
]
},
plugins: [
new CopyPlugin({
patterns: [
{from: "icons", to: "icons"},
{from: "./manifest.webmanifest", to: ""},
{from: "./.htaccess", to: ""},
{from: "./robots.txt", to: ""}
],
}),
new MiniCssExtractPlugin({
filename: "[name].[hash].css"
}),
new HtmlWebpackPlugin({
template: "./src/app/index.html",
favicon: "./src/assets/image/favicon.png",
inject: true,
minify: {
removeComments: true,
collapseWhitespace: true
}
}),
new ServiceWorkerWebpackPlugin({
entry: path.join(__dirname, './src/app/serviceWorker/serviceWorkerInit.js'),
}),
new WebpackManifestPlugin({
fileName: 'asset-manifest.json', // Not to confuse with manifest.json
}),
new ESLintPlugin({files: './src/app/app.js'}),
new PurifyCssPlugin({
paths: [
...(glob.sync(`./src/app/*.html`)),
...(glob.sync(`./src/app/**/*.jsx`)),
...(glob.sync(`./dist/*.html`))
],
styleExtensions: ['.css','.scss'],
moduleExtensions: [".html"],
verbose: true,
purifyOptions: {
info: true,
minify: true,
whitelist: ["*purify*"]
},
})
]
};
Webpack.config.prod.js
const merge = require('webpack-merge');
const OptimizeCSSAssetsPlugin = require('optimize-css-assets-webpack-plugin');
const CompressionPlugin = require('compression-webpack-plugin');
const webpackBaseConfiguration = require('./webpack.config.base.js');
const TerserPlugin = require('terser-webpack-plugin')
const webpack = require('webpack');
const GLOBALS = {
'process.env.NODE_ENV': JSON.stringify('production'),
__DEV__: false
};
module.exports = merge(webpackBaseConfiguration,{
mode: 'production',
entry: [
'#babel/polyfill',
'./src/app/app.jsx'
],
devServer: {
contentBase: './dist'
},
optimization: {
splitChunks: {
chunks: 'all',
minSize: 20000,
maxSize: 0,
minChunks: 2,
maxAsyncRequests: 30,
maxInitialRequests: 30,
enforceSizeThreshold: 50000,
cacheGroups: {
defaultVendors: {
test: /[\\/]node_modules[\\/]/,
priority: -10,
reuseExistingChunk: true
},
default: {
minChunks: 2,
priority: -20,
reuseExistingChunk: true
}
}
},
usedExports: true,
minimizer: [
new TerserPlugin({
parallel: true,
terserOptions: {
ecma: 6,
},
}),
new OptimizeCSSAssetsPlugin()
]
},
plugins: [
new webpack.DefinePlugin(GLOBALS),
new CompressionPlugin({
algorithm: 'gzip',
minRatio: Number.MAX_SAFE_INTEGER
}),
new CompressionPlugin({
filename: "[path].br",
algorithm: "brotliCompress",
test: /\.(js|css|html|svg|png|svg|jpg|gif)$/,
deleteOriginalAssets: false,
minRatio: Number.MAX_SAFE_INTEGER
})
]
});
Webpack.config.dev.js
const merge = require('webpack-merge');
const webpackBaseConfiguration = require('./webpack.config.base');
const webpack = require('webpack');
module.exports = merge(webpackBaseConfiguration,{
mode: 'development',
output: {
publicPath: '/'
},
devServer: {
contentBase: './src',
historyApiFallback: true
},
devtool: 'cheap-module-eval-source-map',
entry: [
'#babel/polyfill',
'webpack-hot-middleware/client?reload=true',
'./src/app/app.jsx'
],
plugins: [
/*For hot deployment*/
new webpack.HotModuleReplacementPlugin()
]
});
package.json
{
"name": "Sample",
"version": "1.0.0",
"description": "React app",
"scripts": {
"clean": "rimraf dist",
"deploy": "node deploy",
"build:prod:deploy": "npm run clean && webpack --mode production --config webpack.config.prod.js && node deploy",
"build:prod": "npm run clean && webpack --mode production --config webpack.config.prod.js",
"build:dev": "webpack-dev-server --mode development --config webpack.config.dev.js --open --hot",
"start": "npm run build && npm run deploy",
"build": "npm run clean && webpack --mode production --config webpack.config.prod.js && npm run deploy"
},
"engines": {
"node": "14.x",
"npm": "6.x"
},
"keywords": [],
"author": "",
"license": "ISC",
"devDependencies": {
"#babel/cli": "^7.12.1",
"#babel/core": "^7.2.2",
"#babel/node": "^7.2.2",
"#babel/plugin-proposal-class-properties": "^7.3.0",
"#babel/polyfill": "^7.2.5",
"#babel/preset-env": "^7.2.0",
"#babel/preset-react": "^7.0.0",
"#babel/register": "^7.0.0",
"#gfx/zopfli": "^1.0.15",
"babel-eslint": "^10.1.0",
"babel-loader": "^8.0.4",
"brotli-webpack-plugin": "^1.1.0",
"compression-webpack-plugin": "^2.0.0",
"copy-webpack-plugin": "6.2.1",
"css-loader": "^2.1.0",
"eslint": "^7.18.0",
"eslint-webpack-plugin": "^2.4.1",
"file-loader": "^3.0.1",
"ftp-deploy": "^2.4.0",
"glob": "^7.1.6",
"html-loader": "^0.5.5",
"html-webpack-plugin": "^3.2.0",
"image-minimizer-webpack-plugin": "^1.0.0",
"image-webpack-loader": "^7.0.1",
"imagemin-gifsicle": "^7.0.0",
"imagemin-jpegtran": "^7.0.0",
"imagemin-optipng": "^8.0.0",
"imagemin-svgo": "^8.0.0",
"mini-css-extract-plugin": "^0.5.0",
"node-sass": "^4.14.1",
"optimize-css-assets-webpack-plugin": "^5.0.1",
"purify-css": "^1.2.5",
"purifycss-webpack": "^0.7.0",
"rimraf": "^2.6.3",
"sass-loader": "^7.1.0",
"serviceworker-webpack-plugin": "^1.0.1",
"terser-webpack-plugin": "4.2.3",
"uglifyjs-webpack-plugin": "^2.1.1",
"webpack": "^4.40.0",
"webpack-cli": "^3.1.2",
"webpack-dev-middleware": "^3.5.2",
"webpack-dev-server": "^3.11.0",
"webpack-ftp-upload-plugin": "^1.0.3",
"webpack-hot-middleware": "^2.24.3",
"webpack-manifest-plugin": "^3.0.0",
"webpack-merge": "^4.2.1",
"workbox-cacheable-response": "^6.0.2",
"workbox-expiration": "^6.0.2",
"workbox-routing": "^6.0.2",
"workbox-strategies": "^6.0.2",
"workbox-webpack-plugin": "^6.0.2",
"zlib": "^1.0.5"
},
"dependencies": {
"axios": "^0.19.0",
"bootstrap": "^4.5.0",
"react": "^16.8.1",
"react-dom": "^16.8.1",
"react-lazy-load-image-component": "^1.5.1",
"react-paginate": "^6.5.0",
"react-redux": "^7.2.2",
"react-router": "^4.3.1",
"react-router-dom": "^4.3.1",
"redux": "^4.0.5",
"redux-immutable-state-invariant": "^2.1.0",
"redux-thunk": "^2.3.0"
}
}

Getting module not build error due to sass-loader

I am getting the below error while running the command npm run dev. But the same code is working fine in my colleague system. I am not getting what went wrong.
When I am adding one global.scss file in App.js then only I am getting the below error otherwise component level scss file working fine.
ERROR in ./src/client/styles/global.scss (./node_modules/css-loader/dist/cjs.js??ref--5-1!./node_modules/sass-loader/dist/cjs.js!./src/client/styles/global.scss)
Module build failed (from ./node_modules/sass-loader/dist/cjs.js):
SassError: Invalid CSS after "��": expected "{", was ""
on line 1 of C:\Users\Azad\Repos\travelBookingCloud-FE\src\client\styles\global.scss
>> ��
^
# ./src/client/styles/global.scss 2:26-153 43:4-64:5 46:18-145
# ./src/client/client.js
i 「wdm」: Failed to compile.
webpack.config.js
const path = require("path");
const HtmlWebpackPlugin = require("html-webpack-plugin");
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
const UglifyJsPlugin = require('uglifyjs-webpack-plugin');
const Dotenv = require('dotenv-webpack');
const miniCssPlugin = new MiniCssExtractPlugin({
filename: "[name].css",
chunkFilename: "[id].css"
});
const htmlPlugin = new HtmlWebpackPlugin({
filename: "index.html",
template: path.join(__dirname, "src", "index.html")
});
const uglifyJsPlugin = new UglifyJsPlugin({
sourceMap: true,
test: /\.min\.js$/i,
});
const dotEnv=new Dotenv();
module.exports = (env, argv)=> {
const isDevelopment = argv.mode === 'development';
return {
optimization: {
nodeEnv: argv.mode
},
entry: path.join(__dirname, "src/client", "client.js"),
output: {
path: path.join(__dirname, "build"),
filename: "bundle.js",
publicPath: '/'
},
mode: argv.mode,
devtool: isDevelopment
? '#eval-source-map'
: 'source-map',
devServer: {
stats: {
children: false,
maxModules: 0
},
port: 3000,
historyApiFallback: true
},
node: {
fs: "empty"
},
resolve: {
modules: ['src/scripts', 'node_modules'],
extensions: ['.jsx', '.js'],
unsafeCache: true,
alias: {
Config: path.resolve(__dirname, 'src/config'),
Components: path.resolve(__dirname, 'src/client/components'),
Constants: path.resolve(__dirname, 'src/client/constants'),
Helpers: path.resolve(__dirname, 'src/client/helpers'),
Views: path.resolve(__dirname, 'src/client/views'),
Widgets: path.resolve(__dirname, 'src/client/widgets'),
App: path.resolve(__dirname, 'src')
}
},
module: {
rules: [
{
test: /.(js|jsx)$/,
exclude: /node_modules/,
use: {
loader: "babel-loader"
}
},
{
test: /\.(sa|sc|c)ss$/,
use: [
isDevelopment
? "style-loader"
: MiniCssExtractPlugin.loader,
{
loader: "css-loader",
options: {
importLoaders: 1
}
},
"sass-loader"
]
},
{
test: /\.(png|jpg|jp(e)g|gif|svg)$/i,
use: [
{
loader: "url-loader",
options: {
limit: 8192
}
}
]
},
{
test: /\.(ttf|eot|svg|jpg|jp(e)g|png|woff(2)?)(\?[a-z0-9=&.]+)?$/,
use: [
{
loader: "file-loader",
options: {
name: "[path][name]-[hash:8].[ext]"
}
}
]
}
]
},
plugins: [
uglifyJsPlugin,htmlPlugin,miniCssPlugin,dotEnv
]
};
};
package.json
{
"name": "travelbookingcloud-fe",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "webpack --mode development",
"dev": "webpack-dev-server --mode development --hot --open",
"build": "webpack --mode production"
},
"keywords": [],
"author": "",
"license": "ISC",
"devDependencies": {
"#babel/core": "^7.10.4",
"#babel/plugin-proposal-class-properties": "^7.10.4",
"#babel/preset-env": "^7.10.4",
"#babel/preset-react": "^7.10.4",
"#date-io/date-fns": "^2.6.2",
"#material-ui/core": "^4.11.0",
"#material-ui/icons": "^4.9.1",
"#material-ui/lab": "^4.0.0-alpha.56",
"#material-ui/pickers": "^3.2.10",
"#material-ui/utils": "^4.10.2",
"axios": "^0.19.2",
"babel-loader": "^8.1.0",
"copy-webpack-plugin": "^6.0.3",
"css-loader": "^3.6.0",
"dotenv": "^8.2.0",
"dotenv-webpack": "^1.8.0",
"file-loader": "^6.0.0",
"html-webpack-plugin": "^4.3.0",
"mini-css-extract-plugin": "^0.9.0",
"moment": "^2.27.0",
"node-sass": "^4.14.1",
"react": "^16.13.1",
"react-dom": "^16.13.1",
"react-router-dom": "^5.2.0",
"sass-loader": "^8.0.2",
"style-loader": "^1.2.1",
"uglifyjs-webpack-plugin": "^2.2.0",
"webpack": "^4.43.0",
"webpack-cli": "^3.3.12",
"webpack-dev-server": "^3.11.0"
},
"dependencies": {
"react-redux": "^7.2.0",
"redux": "^4.0.5",
"redux-thunk": "^2.3.0"
}
}

Require JS Compile React application

I am working on React JS application. While building the code using grunt build I am getting the below error:
Running "requirejs:compile" (requirejs) task
Error: Cannot uglify file: C:/Dev/first-research/first-research-min.js.
Skipping it. Error is:
SyntaxError: Unexpected token: name (ClassicEditor)
If the source uses ES2015 or later syntax, please pass "omptimize: 'none'" to r.js
and use an ES2015+ compatible minifier after running r.js. The included
UglifyJS only understands ES5 or earlier syntax.
Calling webpack configuration from grunt to build and transpile from es6 to es5.
Attached are the Webpack, grunt, package.json and babel.rc file for ref
Webpack file
const path = require('path'),
webpack = require('webpack'),
MiniCssExtractPlugin = require('mini-css-extract-plugin');
const { styles } = require( '#ckeditor/ckeditor5-dev-utils' );
process.env.NODE_ENV = 'development';
module.exports = {
optimization: {
splitChunks: {
cacheGroups: {
styles: {
name: 'app',
test: /\.css$/,
chunks: 'all',
enforce: true
}
}
}
},
mode: 'development',
entry: {
'app': './src/app'
},
resolve: {
extensions: ['.js', '.jsx', '.json', '.scss', '.css'],
modules: ['./node_modules']
},
output: {
path: path.resolve(__dirname, '../dist'),
filename: '[name]-bundle.js',
libraryTarget: 'amd'
},
module: {
rules: [
{
test: /ckeditor5-[^/\\]+[/\\]theme[/\\]icons[/\\][^/\\]+\.svg$/,
use: [ 'raw-loader' ]
},
{ // To process CKEditor CSS files.
test: /ckeditor5-[^/\\]+[/\\]theme[/\\].+\.css/,
use: [
{
loader: 'style-loader',
options: {
singleton: true
}
},
{
loader: 'postcss-loader',
options: styles.getPostCssConfig( {
themeImporter: {
themePath: require.resolve('#ckeditor/ckeditor5-theme-lark')
},
minify: true
} )
}
]
},
// ESlint loader
{
test: /\.(js|jsx)$/, // include .js and .jsx files
use: [
'eslint-loader'
],
enforce: 'pre',
exclude: /node_modules/ // exclude any and all files in the node_modules folder
},
// ES6 loader
{
test: /\.(js|jsx)$/,
exclude: /node_modules/, // exclude any and all files in the node_modules folder
use: {
loader: 'babel-loader',
options:{
presets: ['env']
}
}
},
// Style loader other than CK5 editor CSS files.
{
test: /\.css$/,
exclude: /ckeditor5-[^/\\]+[/\\]theme[/\\].+\.css/,
use: [
MiniCssExtractPlugin.loader,
"css-loader"
]
},
{
test: /\.scss$/,
exclude: /ckeditor5-[^/\\]+[/\\]theme[/\\].+\.scss/,
use: [
MiniCssExtractPlugin.loader,
"css-loader",
"sass-loader"
]
},
{
test: /\.(png|jpg|gif|svg|eot|ttf|woff|woff2)$/,
exclude: /ckeditor5-[^/\\]+[/\\]theme[/\\]icons[/\\][^/\\]+\.svg$/,
use: [{
loader: 'url-loader',
options: {
limit: 10000
}
}]
},
// html loader
{
test: /\.html$/,
use: [{
loader: 'html-loader',
options: {
minimize: true,
}
}]
},
{
loader: require.resolve('file-loader'),
// Exclude `js` files to keep the "css" loader working as it injects
// its runtime that would otherwise be processed through the "file" loader.
// Also exclude `html` and `json` extensions so they get processed
// by webpack's internal loaders.
exclude: [
/\.(js|jsx|mjs)$/,
/\.html$/,
/\.json$/,
/ckeditor5-[^/\\]+[/\\]theme[/\\]icons[/\\][^/\\]+\.svg$/,
/ckeditor5-[^/\\]+[/\\]theme[/\\].+\.css/,
/(node_modules)/,
/\.css$/
],
options: {
name: 'static/media/[name].[hash:8].[ext]'
}
}
]
},
plugins: [
new MiniCssExtractPlugin({
filename: '[name]-bundle.css',
}),
new webpack.LoaderOptionsPlugin({ options: {} }),
new webpack.DefinePlugin({
'process.env': {
NODE_ENV: JSON.stringify(process.env.NODE_ENV)
}
}),
new webpack.ContextReplacementPlugin(/moment[\/\\]locale$/, /en-gb/)
// new CKEditorWebpackPlugin( {
// language: 'pl'
// })
],
externals: [
/^user-profile/, //OK
/^settings\/settings/, //OK
/^am-permissions\/permission/, //OK
/^logger\/log/, //OK
/^am-permissions/, //OK
/^am-address/, //OK
/^am-alerter/, //OK
/^amfx-blotter-grid\//, //OK
/^amfx-blotter-grid-components\//, //OK
/^amfx-blotter-filters\//, //OK
/^amfx-react-components\//, //OK
/^menu\//, //OK
'react', //OK
'react-dom', //OK
'prop-types', //OK
/^jquery$/, //OK:
/^underscore$/, //OK:
/^lodash$/,
/^q$/, //OK:
/^d3$/, //OK:
/^text/, //OK:
/^d3-utils\//, //OK:
/^bootstrap\//, //OK:
/^moment$/, //OK:
/^am-modal\//, //OK
/^xhr-client\//, //OK
/^q\//, //OK
/^whatwg-fetch\//, //OK
'immutable', //OK
/^amfx-tab\//, //OK
/^fx-blotter\//, //OK
/^zap-tab-comms\//, //OK
/^trade-operations\// //OK
],
devtool: 'source-map',
resolveLoader: {
alias: {
'css/css': 'style-loader'
}
}
};
package.json
{
"name": "first-research",
"version": "0.1.18",
"description": "first-research: Built using the Zambezi Platform",
"main": "dist/react-your-component-name.min.js",
"repository": {
"type": "git",
"url": "https://stash.dts.fm.rbsgrp.net/scm/amfirstresearch/first-research.git"
},
"scripts": {
"build": "webpack --progress --watch --config ./config/webpack.dev.js",
"test": "jest"
},
"devDependencies": {
"#ckeditor/ckeditor5-dev-utils": "^10.0.3",
"#ckeditor/ckeditor5-theme-lark": "^11.0.0",
"babel": "^6.1.18",
"babel-core": "^6.14.0",
"babel-eslint": "^6.1.0",
"babel-jest": "^15.0.0",
"babel-loader": "^7.1.2",
"babel-polyfill": "^6.13.0",
"babel-preset-es2015": "^6.14.0",
"babel-preset-es2015-node5": "^1.2.0",
"babel-preset-react": "^6.11.1",
"babel-preset-react-hmre": "^1.1.1",
"babel-preset-stage-0": "^6.5.0",
"babel-runtime": "^6.6.1",
"cross-env": "^1.0.8",
"css": "^1.0.7",
"css-loader": "^0.28.7",
"eslint": "^3.7.0",
"eslint-config-airbnb": "^10.0.1",
"eslint-loader": "^1.5.0",
"eslint-plugin-import": "^1.13.0",
"eslint-plugin-jsx-a11y": "^2.1.0",
"eslint-plugin-react": "^6.1.1",
"extract-text-webpack-plugin": "^3.0.0",
"file-loader": "^0.11.2",
"grunt": "^1.0.3",
"grunt-contrib-clean": "^1.1.0",
"grunt-contrib-concat": "^1.0.1",
"grunt-contrib-copy": "^1.0.0",
"grunt-contrib-requirejs": "^1.0.0",
"grunt-contrib-sass": "^1.0.0",
"grunt-contrib-watch": "^1.0.0",
"grunt-webpack": "^3.0.2",
"identity-obj-proxy": "^3.0.0",
"jest": "^15.1.1",
"jest-static-stubs": "^0.0.1",
"lodash": "^4.17.10",
"mini-css-extract-plugin": "^0.4.1",
"moment": "^2.22.2",
"postcss-loader": "^3.0.0",
"raw-loader": "^0.5.1",
"react-addons-test-utils": "^15.3.1",
"react-test-renderer": "^15.3.1",
"rimraf": "^2.5.4",
"style-loader": "^0.13.1",
"url-loader": "^0.5.7",
"webpack": "^4.16.5",
"webpack-merge": "^4.1.0",
"zambezi-contrib-build": "^2.1.3"
},
"dependencies": {
"#ckeditor/ckeditor5-adapter-ckfinder": "^10.0.2",
"#ckeditor/ckeditor5-autoformat": "^10.0.2",
"#ckeditor/ckeditor5-basic-styles": "^10.0.2",
"#ckeditor/ckeditor5-block-quote": "^10.0.2",
"#ckeditor/ckeditor5-build-classic": "^11.0.1",
"#ckeditor/ckeditor5-dev-webpack-plugin": "^6.0.3",
"#ckeditor/ckeditor5-easy-image": "^10.0.2",
"#ckeditor/ckeditor5-editor-classic": "^11.0.0",
"#ckeditor/ckeditor5-essentials": "^10.1.1",
"#ckeditor/ckeditor5-heading": "^10.0.2",
"#ckeditor/ckeditor5-image": "^10.2.0",
"#ckeditor/ckeditor5-link": "^10.0.3",
"#ckeditor/ckeditor5-list": "^11.0.1",
"#ckeditor/ckeditor5-paragraph": "^10.0.2",
"#ckeditor/ckeditor5-react": "^1.0.0-beta.1",
"#zambezi/sdk": "^5.19.1",
"axios": "^0.18.0",
"enzyme": "^3.3.0",
"es6-promise": "^4.2.4",
"isomorphic-fetch": "^2.2.1",
"prop-types": "^15.6.2",
"react": "^15.3.1",
"react-dom": "^15.3.1",
"react-modal": "^3.5.1",
"react-router-dom": "^4.3.1",
"react-tabs": "^2.2.2"
},
"_zambezi": {
"runtimeDependencies": [
"am-address",
"am-alerter",
"am-permissions",
"react",
"react-dom",
"css",
"lodash",
"prop-types"
]
},
"jest": {
"collectCoverage": true,
"moduleNameMapper": {
"^.+\\.(png|jpg|gif)$": "jest-static-stubs/$1",
"^.+\\.(eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$": "identity-obj-proxy",
"^.+\\.(css|less)$": "identity-obj-proxy"
}
}
}
Grunt file
module.exports = function (grunt) {
grunt.initConfig({
build: {
options: {
optimize: 'none',
include: ['first-research'],
plugins: {
'css/css': '../node_modules/css/css',
'settings/settings': 'empty:',
"am-permissions/permission": "empty:",
"user-profile/user-profile": "empty:",
"logger/log": "empty:"
}
}
},
webpack: {
dev: require('./config/webpack.dev.js'),
prod: require('./config/webpack.prod.js')
},
watch: {
files: ['src/**/*.js'],
tasks: ['webpack:dev', 'build']
}
});
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.loadNpmTasks('grunt-webpack');
grunt.loadNpmTasks('zambezi-contrib-build');
grunt.registerTask('default', ['webpack:dev', 'build']);
grunt.registerTask('ci-build', ['webpack:prod', 'build']);
};
babel.rc
{
"presets": [
"stage-0",
"react",
"es2015-node5"
],
"plugins": [
"transform-class-properties"
],
"sourceMaps": true
}

ReactDOM issue: Module not found: Error: Cannot resolve module 'react/lib/ReactDOM'

I just restarted my computer and now when I try to run my React project locally I get this error. Before restarting I was able to work on my project just fine. I tried removing my node_modules folder and npm installing again, still not working. Anybody have any ideas what my problem could be? Here is my package.json and webpack.config:
package.json:
{
"version": "1.0.0",
"description": "== README",
"main": "index.js",
"directories": {
"test": "test"
},
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "Stefan",
"license": "ISC",
"dependencies": {
"babel-core": "6.18.2",
"babel-loader": "6.2.7",
"babel-preset-es2015": "6.18.0",
"babel-preset-react": "6.16.0",
"css-loader": "0.26.1",
"file-loader": "0.9.0",
"less": "2.3.1",
"less-loader": "2.2.3",
"react": "15.4.1",
"react-addons-test-utils": "15.4.1",
"react-dom": "15.3.2",
"react-fontawesome": "1.5.0",
"react-redux": "4.4.5",
"react-router": "3.0.0",
"redux": "3.6.0",
"style-loader": "0.13.1",
"url-loader": "0.5.7",
"webpack": "1.13.3"
}
}
webpack.config:
module.exports = {
context: __dirname,
entry: "./frontend/app.jsx",
output: {
path: "app/assets/javascripts",
filename: "bundle.js",
publicPath: "/assets/"
},
resolve: {
extensions: ["", ".js", ".jsx"]
},
module: {
loaders: [
{
test: /\.jsx?$/,
exclude: /(node_modules|bower_components)/,
loader: 'babel',
query: {
presets: ['es2015', 'react']
}
},{
test: /\.node$/,
loader: "node-loader"
},{
test: /\.woff(\?v=\d+\.\d+\.\d+)?$/,
loader: "url?limit=10000&mimetype=application/font-woff"
}, {
test: /\.woff2(\?v=\d+\.\d+\.\d+)?$/,
loader: "url?limit=10000&mimetype=application/font-woff"
}, {
test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/,
loader: "url?limit=10000&mimetype=application/octet-stream"
}, {
test: /\.eot(\?v=\d+\.\d+\.\d+)?$/,
loader: "file"
}, {
test: /\.svg(\?v=\d+\.\d+\.\d+)?$/,
loader: "url?limit=10000&mimetype=image/svg+xml"
}
]
},
devtool: 'source-map',
};

Resources