├── .eslintignore ├── .eslintrc.js ├── .github ├── FUNDING.yml └── workflows │ └── node.js.yml ├── .gitignore ├── .npmignore ├── .nvmrc ├── .prettierignore ├── .prettierrc ├── CHANGELOG.md ├── LICENSE ├── README.md ├── docs └── example.png ├── example ├── main.js ├── package-lock.json ├── package.json └── webpack.config.js ├── package-lock.json ├── package.json ├── rollup.config.js └── src ├── entries ├── basic.mjs └── devserver.mjs └── index.js /.eslintignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | dist/ -------------------------------------------------------------------------------- /.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | root: true, 3 | extends: 'eslint:recommended', 4 | parserOptions: { 5 | ecmaVersion: 2021, 6 | sourceType: 'module', 7 | }, 8 | env: { 9 | node: true, 10 | jest: true, 11 | browser: true, 12 | }, 13 | globals: { 14 | page: true, 15 | browser: true, 16 | expectPage: true, 17 | }, 18 | rules: { 19 | 'class-methods-use-this': 'off', 20 | 'no-shadow': 'off', 21 | 'no-param-reassign': 'off', 22 | 'no-use-before-define': 'off', 23 | 'import/prefer-default-export': 'off', 24 | }, 25 | } 26 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | github: gregberge 2 | -------------------------------------------------------------------------------- /.github/workflows/node.js.yml: -------------------------------------------------------------------------------- 1 | # This workflow will do a clean install of node dependencies, build the source code and run tests across different versions of node 2 | # For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions 3 | 4 | name: Node.js CI 5 | 6 | on: 7 | push: 8 | branches: [main] 9 | pull_request: 10 | branches: [main] 11 | 12 | jobs: 13 | build: 14 | runs-on: ubuntu-latest 15 | 16 | strategy: 17 | matrix: 18 | node-version: [14.x, 16.x] 19 | # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ 20 | 21 | steps: 22 | - uses: actions/checkout@v2 23 | - name: Use Node.js ${{ matrix.node-version }} 24 | uses: actions/setup-node@v2 25 | with: 26 | node-version: ${{ matrix.node-version }} 27 | - run: npm ci 28 | - run: npm run build 29 | - run: npm run lint 30 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | dist/ 3 | -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | /* 2 | !/dist/**/*.js 3 | -------------------------------------------------------------------------------- /.nvmrc: -------------------------------------------------------------------------------- 1 | 16 -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | dist/ 3 | package.json 4 | CHANGELOG.md 5 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "singleQuote": true, 3 | "trailingComma": "all", 4 | "semi": false 5 | } 6 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. 4 | 5 | ### [1.1.1](https://github.com/gregberge/error-overlay-webpack-plugin/compare/v1.1.0...v1.1.1) (2022-11-14) 6 | 7 | 8 | ### Bug Fixes 9 | 10 | * compatibility with `webpack-dev-server` ([f3eaa7b](https://github.com/gregberge/error-overlay-webpack-plugin/commit/f3eaa7b0d4ad7c71f1ef56b5d15083449ef52a86)) 11 | 12 | ## [1.1.0](https://github.com/gregberge/error-overlay-webpack-plugin/compare/v1.0.0...v1.1.0) (2022-02-12) 13 | 14 | 15 | ### Features 16 | 17 | * upgrade & various fixes ([bb87e5f](https://github.com/gregberge/error-overlay-webpack-plugin/commit/bb87e5f4a5b3cf86530929616ee6e35cf84aaa81)), closes [#91](https://github.com/gregberge/error-overlay-webpack-plugin/issues/91) [#90](https://github.com/gregberge/error-overlay-webpack-plugin/issues/90) [#82](https://github.com/gregberge/error-overlay-webpack-plugin/issues/82) 18 | 19 | 20 | ### Bug Fixes 21 | 22 | * options has an unknown property 'before' ([#88](https://github.com/gregberge/error-overlay-webpack-plugin/issues/88)) ([28de3ed](https://github.com/gregberge/error-overlay-webpack-plugin/commit/28de3ed3441b5e4b6185fd74c77b6dff3c792ea0)) 23 | 24 | ## [1.0.0](https://github.com/gregberge/error-overlay-webpack-plugin/compare/v0.4.2...v1.0.0) (2021-08-30) 25 | 26 | ### [0.4.2](https://github.com/smooth-code/error-overlay-webpack-plugin/compare/v0.4.1...v0.4.2) (2021-02-02) 27 | 28 | 29 | ### Bug Fixes 30 | 31 | * pass in compiler to devServer before() ([#66](https://github.com/smooth-code/error-overlay-webpack-plugin/issues/66)) ([c0feceb](https://github.com/smooth-code/error-overlay-webpack-plugin/commit/c0feceb73c6c7a38cddc40898cdfbcb0ae83a35e)) 32 | 33 | ### [0.4.1](https://github.com/smooth-code/error-overlay-webpack-plugin/compare/v0.4.0...v0.4.1) (2019-08-28) 34 | 35 | 36 | ### Features 37 | 38 | * upgrade dependencies ([effea01](https://github.com/smooth-code/error-overlay-webpack-plugin/commit/effea01)) 39 | 40 | 41 | # [0.4.0](https://github.com/smooth-code/error-overlay-webpack-plugin/compare/v0.3.0...v0.4.0) (2019-06-17) 42 | 43 | 44 | ### Features 45 | 46 | * support single string entry ([#43](https://github.com/smooth-code/error-overlay-webpack-plugin/issues/43)) ([494e689](https://github.com/smooth-code/error-overlay-webpack-plugin/commit/494e689)) 47 | 48 | 49 | 50 | 51 | # [0.3.0](https://github.com/smooth-code/error-overlay-webpack-plugin/compare/v0.2.0...v0.3.0) (2019-05-23) 52 | 53 | 54 | ### Features 55 | 56 | * close overlay on 'ok' event ([#39](https://github.com/smooth-code/error-overlay-webpack-plugin/issues/39)) ([1471e29](https://github.com/smooth-code/error-overlay-webpack-plugin/commit/1471e29)) 57 | * use webpack options sockPath, sockHost, and sockPort to get socket URL ([#42](https://github.com/smooth-code/error-overlay-webpack-plugin/issues/42)) ([b763f76](https://github.com/smooth-code/error-overlay-webpack-plugin/commit/b763f76)) 58 | 59 | 60 | 61 | 62 | # [0.2.0](https://github.com/smooth-code/error-overlay-webpack-plugin/compare/v0.1.7...v0.2.0) (2019-03-21) 63 | 64 | 65 | ### Features 66 | 67 | * made socket listener optional (required when using dev-middleware only) ([#34](https://github.com/smooth-code/error-overlay-webpack-plugin/issues/34)) ([90caf91](https://github.com/smooth-code/error-overlay-webpack-plugin/commit/90caf91)) 68 | 69 | 70 | 71 | 72 | ## [0.1.7](https://github.com/smooth-code/error-overlay-webpack-plugin/compare/v0.1.6...v0.1.7) (2019-03-14) 73 | 74 | 75 | ### Bug Fixes 76 | 77 | * format compiler errors ([#28](https://github.com/smooth-code/error-overlay-webpack-plugin/issues/28)) ([#30](https://github.com/smooth-code/error-overlay-webpack-plugin/issues/30)) ([6a83ce2](https://github.com/smooth-code/error-overlay-webpack-plugin/commit/6a83ce2)) 78 | 79 | 80 | 81 | 82 | ## [0.1.6](https://github.com/smooth-code/error-overlay-webpack-plugin/compare/v0.1.5...v0.1.6) (2019-01-11) 83 | 84 | 85 | ### Bug Fixes 86 | 87 | * preserve both arguments of original before function ([#23](https://github.com/smooth-code/error-overlay-webpack-plugin/issues/23)) ([433ccb3](https://github.com/smooth-code/error-overlay-webpack-plugin/commit/433ccb3)) 88 | 89 | 90 | 91 | 92 | ## [0.1.5](https://github.com/smooth-code/error-overlay-webpack-plugin/compare/v0.1.4...v0.1.5) (2018-05-25) 93 | 94 | 95 | ### Bug Fixes 96 | 97 | * fix IE11 ([9e84e09](https://github.com/smooth-code/error-overlay-webpack-plugin/commit/9e84e09)), closes [#13](https://github.com/smooth-code/error-overlay-webpack-plugin/issues/13) 98 | 99 | 100 | 101 | 102 | ## [0.1.4](https://github.com/smooth-code/error-overlay-webpack-plugin/compare/v0.1.3...v0.1.4) (2018-03-14) 103 | 104 | 105 | ### Bug Fixes 106 | 107 | * use ES5 syntax ([483d2c6](https://github.com/smooth-code/error-overlay-webpack-plugin/commit/483d2c6)) 108 | 109 | 110 | 111 | 112 | ## [0.1.3](https://github.com/smooth-code/error-overlay-webpack-plugin/compare/v0.1.2...v0.1.3) (2018-03-11) 113 | 114 | 115 | ### Bug Fixes 116 | 117 | * expose package without `.default` ([bcdcd15](https://github.com/smooth-code/error-overlay-webpack-plugin/commit/bcdcd15)), closes [#3](https://github.com/smooth-code/error-overlay-webpack-plugin/issues/3) 118 | * handle Object-based entry settings (multi-entries) ([3d6489d](https://github.com/smooth-code/error-overlay-webpack-plugin/commit/3d6489d)), closes [#4](https://github.com/smooth-code/error-overlay-webpack-plugin/issues/4) 119 | 120 | 121 | 122 | 123 | ## [0.1.2](https://github.com/smooth-code/error-overlay-webpack-plugin/compare/v0.1.1...v0.1.2) (2018-03-09) 124 | 125 | 126 | ### Bug Fixes 127 | 128 | * fix shipped sources ([3b59642](https://github.com/smooth-code/error-overlay-webpack-plugin/commit/3b59642)) 129 | 130 | 131 | 132 | 133 | ## [0.1.1](https://github.com/smooth-code/error-overlay-webpack-plugin/compare/v0.1.0...v0.1.1) (2018-03-09) 134 | 135 | 136 | ### Bug Fixes 137 | 138 | * fix pkg.json ([7661bc5](https://github.com/smooth-code/error-overlay-webpack-plugin/commit/7661bc5)) 139 | 140 | 141 | 142 | 143 | # 0.1.0 (2018-03-09) 144 | 145 | 146 | ### Features 147 | 148 | * first version ([b15e26e](https://github.com/smooth-code/webpack-error-overlay-plugin/commit/b15e26e)) 149 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright 2018 Smooth Code 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 4 | 5 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 6 | 7 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 8 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Error Overlay Webpack Plugin 2 | 3 | ![Node.js CI](https://github.com/gregberge/error-overlay-webpack-plugin/workflows/Node.js%20CI/badge.svg) 4 | 5 | Catch errors with style 💥✨ 6 | 7 | This plugin will display an error overlay in your application. It is the same error overlay used in [create-react-app](https://github.com/facebook/create-react-app). 8 | 9 | - 📦 Webpack 5 support 10 | - 🥞 Elegant stack trace 11 | - 📝 Click to open error line in editor 12 | 13 | Error Overlay Webpack Plugin Example 14 | 15 | ``` 16 | npm install error-overlay-webpack-plugin --save-dev 17 | ``` 18 | 19 | ## Usage 20 | 21 | ```js 22 | // webpack.config.js 23 | const ErrorOverlayPlugin = require('error-overlay-webpack-plugin') 24 | 25 | module.exports = { 26 | entry: 'main.js', 27 | output: { 28 | path: __dirname + '/dist', 29 | filename: 'bundle.js', 30 | }, 31 | plugins: [new ErrorOverlayPlugin()], 32 | devtool: 'cheap-module-source-map', // 'eval' is not supported by error-overlay-webpack-plugin 33 | } 34 | ``` 35 | 36 | ## License 37 | 38 | MIT 39 | -------------------------------------------------------------------------------- /docs/example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gregberge/error-overlay-webpack-plugin/64bf2c137d3f3b6ca5e9e315cc165e40aba8eee2/docs/example.png -------------------------------------------------------------------------------- /example/main.js: -------------------------------------------------------------------------------- 1 | throw new Error('Boom') 2 | -------------------------------------------------------------------------------- /example/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "private": true, 3 | "scripts": { 4 | "start": "webpack serve --mode development --env development" 5 | }, 6 | "devDependencies": { 7 | "html-webpack-plugin": "^5.5.0", 8 | "webpack": "^5.68.0", 9 | "webpack-cli": "^4.9.2", 10 | "webpack-dev-server": "^4.7.4" 11 | }, 12 | "dependencies": { 13 | "process": "^0.11.10" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /example/webpack.config.js: -------------------------------------------------------------------------------- 1 | const path = require('path') 2 | const webpack = require('webpack') 3 | const HtmlWebpackPlugin = require('html-webpack-plugin') 4 | const ErrorOverlayPlugin = require('../dist/index.cjs') 5 | 6 | module.exports = { 7 | mode: 'development', 8 | entry: './main.js', 9 | output: { 10 | path: path.join(__dirname, 'dist'), 11 | filename: 'bundle.js', 12 | }, 13 | resolve: { 14 | fallback: { 15 | process: false, 16 | }, 17 | }, 18 | plugins: [ 19 | new webpack.ProvidePlugin({ 20 | process: 'process', 21 | }), 22 | new ErrorOverlayPlugin(), 23 | new HtmlWebpackPlugin(), 24 | ], 25 | devtool: 'cheap-module-source-map', // 'eval' is not supported by error-overlay-webpack-plugin 26 | devServer: { 27 | port: 8080, 28 | open: true, 29 | }, 30 | } 31 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "error-overlay-webpack-plugin", 3 | "description": "Webpack plugin to automatically display an error overlay in your application.", 4 | "keywords": [ 5 | "webpack", 6 | "plugin", 7 | "webpack-plugin", 8 | "react", 9 | "react-error-overlay", 10 | "error-overlay" 11 | ], 12 | "bugs": "https://github.com/gregberge/error-overlay-webpack-plugin/issues", 13 | "repository": "github:gregberge/error-overlay-webpack-plugin", 14 | "version": "1.1.1", 15 | "type": "commonjs", 16 | "main": "dist/index.cjs", 17 | "module": "dist/index.mjs", 18 | "exports": { 19 | ".": { 20 | "require": "./dist/index.cjs", 21 | "import": "./dist/index.mjs" 22 | } 23 | }, 24 | "funding": { 25 | "type": "github", 26 | "url": "https://github.com/sponsors/gregberge" 27 | }, 28 | "scripts": { 29 | "build": "rm -rf ./dist && rollup -c && cp -r ./src/entries ./dist/entries", 30 | "format": "prettier --write \"**/*.{js,json,md}\" \"*.{js,json,md}\"", 31 | "lint": "eslint .", 32 | "prepublishOnly": "npm run build", 33 | "release": "standard-version && conventional-github-releaser -p angular" 34 | }, 35 | "devDependencies": { 36 | "conventional-github-releaser": "^3.1.5", 37 | "esbuild": "^0.14.21", 38 | "eslint": "^8.9.0", 39 | "prettier": "^2.5.1", 40 | "rollup": "^2.67.2", 41 | "rollup-plugin-esbuild": "^4.8.2", 42 | "standard-version": "^9.3.2" 43 | }, 44 | "license": "MIT", 45 | "dependencies": { 46 | "react-dev-utils": "^12.0.0", 47 | "react-error-overlay": "6.0.9", 48 | "sockjs-client": "^1.5.2", 49 | "url": "^0.11.0" 50 | }, 51 | "peerDependencies": { 52 | "webpack": "^4.0.0 || ^5.0.0" 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /rollup.config.js: -------------------------------------------------------------------------------- 1 | import esbuild from 'rollup-plugin-esbuild' 2 | 3 | const name = 'dist/index' 4 | 5 | const bundle = (config) => ({ 6 | ...config, 7 | input: 'src/index.js', 8 | external: (id) => !/^[./]/.test(id), 9 | }) 10 | 11 | export default [ 12 | bundle({ 13 | plugins: [ 14 | esbuild({ 15 | target: 'es2015', 16 | }), 17 | ], 18 | output: [ 19 | { 20 | file: `${name}.cjs`, 21 | format: 'cjs', 22 | sourcemap: true, 23 | }, 24 | { 25 | file: `${name}.mjs`, 26 | format: 'es', 27 | sourcemap: true, 28 | }, 29 | ], 30 | }), 31 | ] 32 | -------------------------------------------------------------------------------- /src/entries/basic.mjs: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | import { 3 | setEditorHandler, 4 | startReportingRuntimeErrors, 5 | } from 'react-error-overlay' 6 | import launchEditorEndpoint from 'react-dev-utils/launchEditorEndpoint.js' 7 | 8 | setEditorHandler((errorLocation) => { 9 | // Keep this sync with errorOverlayMiddleware.js 10 | fetch( 11 | launchEditorEndpoint + 12 | '?fileName=' + 13 | window.encodeURIComponent(errorLocation.fileName) + 14 | '&lineNumber=' + 15 | window.encodeURIComponent(errorLocation.lineNumber || 1) + 16 | '&colNumber=' + 17 | window.encodeURIComponent(errorLocation.colNumber || 1), 18 | ) 19 | }) 20 | 21 | startReportingRuntimeErrors({}) 22 | -------------------------------------------------------------------------------- /src/entries/devserver.mjs: -------------------------------------------------------------------------------- 1 | /* global __resourceQuery */ 2 | 3 | import querystring from 'querystring' 4 | import SockJS from 'sockjs-client' 5 | import formatWebpackMessages from 'react-dev-utils/formatWebpackMessages.js' 6 | import { reportBuildError, dismissBuildError } from 'react-error-overlay' 7 | 8 | let sockOptions = {} 9 | if (typeof __resourceQuery === 'string' && __resourceQuery) { 10 | sockOptions = querystring.parse(__resourceQuery.substr(1)) 11 | } 12 | 13 | const connection = 14 | sockOptions.sockPath === '/ws' && typeof WebSocket !== 'undefined' 15 | ? new WebSocket( 16 | `${window.location.protocol === 'https:' ? 'wss:' : 'ws:'}//${ 17 | sockOptions.sockHost || window.location.hostname 18 | }:${sockOptions.sockPort || window.location.port}${ 19 | sockOptions.sockPath || '/ws' 20 | }`, 21 | ) 22 | : new SockJS( 23 | `${window.location.protocol}//${ 24 | sockOptions.sockHost || window.location.hostname 25 | }:${sockOptions.sockPort || window.location.port}${ 26 | sockOptions.sockPath || '/sockjs-node' 27 | }`, 28 | ) 29 | 30 | connection.onmessage = function onmessage(e) { 31 | const { type, data } = JSON.parse(e.data) 32 | let formatted 33 | switch (type) { 34 | case 'ok': 35 | dismissBuildError() 36 | break 37 | case 'errors': 38 | formatted = formatWebpackMessages({ 39 | errors: data, 40 | warnings: [], 41 | }) 42 | reportBuildError(formatted.errors[0]) 43 | break 44 | default: 45 | // Do nothing. 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /src/index.js: -------------------------------------------------------------------------------- 1 | const errorOverlayMiddleware = require('react-dev-utils/errorOverlayMiddleware') 2 | 3 | const chunkPathBasic = require.resolve('./entries/basic.mjs') 4 | const chunkPathDevServer = require.resolve('./entries/devserver.mjs') 5 | 6 | class ErrorOverlayPlugin { 7 | apply(compiler) { 8 | const className = this.constructor.name 9 | 10 | if (compiler.options.mode !== 'development') return 11 | 12 | const devServerEnabled = !!compiler.options.devServer 13 | const sockOptions = {} 14 | if (devServerEnabled) { 15 | // In the webpack config it's possible to override the websocket server's 16 | // connect URL for clients that need to connect through a proxy or other means. 17 | // 18 | // Use a webSocketURL config if present, otherwise default to the same address 19 | // as the devServer: 20 | sockOptions.sockHost = 21 | compiler.options.devServer.client?.webSocketURL?.hostname || 22 | compiler.options.devServer.host 23 | sockOptions.sockPath = 24 | compiler.options.devServer.client?.webSocketURL?.pathname || 25 | (compiler.options.devServer.webSocketServer === "object" && compiler.options.devServer.webSocketServer.options?.path) || 26 | '/ws' 27 | sockOptions.sockPort = 28 | compiler.options.devServer.client?.webSocketURL?.port || 29 | compiler.options.devServer.port 30 | } 31 | 32 | compiler.hooks.entryOption.tap(className, (context, entry) => { 33 | adjustEntry(entry, devServerEnabled, sockOptions) 34 | }) 35 | 36 | compiler.hooks.afterResolvers.tap(className, ({ options }) => { 37 | if (devServerEnabled) { 38 | const originalOnBeforeSetupMiddleware = 39 | options.devServer.onBeforeSetupMiddleware 40 | options.devServer.setupMiddlewares = (middlewares, devServer) => { 41 | if (originalOnBeforeSetupMiddleware) { 42 | originalOnBeforeSetupMiddleware(devServer) 43 | } 44 | middlewares.unshift(errorOverlayMiddleware()); 45 | return middlewares; 46 | } 47 | } 48 | }) 49 | } 50 | } 51 | 52 | function adjustEntry(entry, enableDevServer, sockOptions) { 53 | if (typeof entry === 'string') { 54 | entry = [entry] // for anonymous single entry points 55 | } 56 | 57 | if (Array.isArray(entry)) { 58 | if (enableDevServer) { 59 | const sockHost = sockOptions.sockHost 60 | ? `&sockHost=${sockOptions.sockHost}` 61 | : '' 62 | const sockPath = sockOptions.sockPath 63 | ? `&sockPath=${sockOptions.sockPath}` 64 | : '' 65 | const sockPort = sockOptions.sockPort 66 | ? `&sockPort=${sockOptions.sockPort}` 67 | : '' 68 | const chunkPathDevServerWithParams = `${chunkPathDevServer}?${sockHost}${sockPath}${sockPort}` 69 | if (!entry.includes(chunkPathDevServerWithParams)) { 70 | entry.unshift(chunkPathDevServerWithParams) 71 | } 72 | } 73 | 74 | if (!entry.includes(chunkPathBasic)) { 75 | entry.unshift(chunkPathBasic) 76 | } 77 | } else { 78 | Object.keys(entry).forEach((entryName) => { 79 | entry[entryName] = adjustEntry( 80 | entry[entryName], 81 | enableDevServer, 82 | sockOptions, 83 | ) 84 | }) 85 | } 86 | 87 | return entry 88 | } 89 | 90 | module.exports = ErrorOverlayPlugin 91 | --------------------------------------------------------------------------------