Comments (7)
Yes, I will try to open a PR soon. Should be there the next few days latest. Locally solution 1 worked fine for me. But have to check all unit tests first.
from webpack.
Feel free to send a PR, we have a lot of tests, so we will catch potential problems
from webpack.
I found something suspicious which might allow an easy fix:
- Various top level symbols are marked by the InnerGraphPlugin:
webpack/lib/optimize/InnerGraphPlugin.js
Line 133 in 611bded
- The
InnerGraph.tagTopLevelSymbol
first defines a variable in the parser with the name and then additionally tags the variable with the top level symbol.
webpack/lib/optimize/InnerGraph.js
Lines 269 to 279 in 611bded
- The problem:
parser.defineVariable
adds a variable with the current scope as value.parser.tagVariable
also defines a variable but with the correct top level symbol as value. But as there is already a VariableInfo registered fromdefineVariable
resulting in the name not to be set
I see two potential fixes in this code path:
- In
InnerGraph.tagTopLevelSymbol
we remove the call toparser.defineVariable
. (or move it into the if-statement when a tag already exists).- Feels like the safer option as the change is quite isolated and just ensures we do not double-define the variable with missing info.
- In
JavaScriptParser.tagVariable
we fill the name we know instead oftrue
into the VariableInfo.- It seems the old name was used before and things were refactored as part of ec51894 I'm not so sure about the impact of this change.
from webpack.
Just looked at the reproducible test repo, yeah, we need to fix it, because other plugins can be broken, it can work for the development mode, but broken for the production mode, it is a critical issue... Will you look at this?
from webpack.
Made a proposal for fixing the problem. I'm willing to contribute the change as an individual developer but I'm a bit reluctant to provide so many personal details (e.g. mailing address) in the EasyCLA to just contribute some code to this project.
from webpack.
I wanted to resolve this issue
from webpack.
see if we directly adjust the hook registration logic to work with identifiers ,
(node:8984) [DEP_WEBPACK_COMPILATION_NORMAL_MODULE_LOADER_HOOK] DeprecationWarning: Compilation.hooks.normalModuleLoader was moved to NormalModule.getCompilationHooks(compilation).loader
it will give you just deprecation warning ,so if incase we adjust it so that we're tapping into the expression hook for the "new" keyword. Then, we check if the argument to new is an identifier (assuming it's a simple class name without further qualification) and directly check if it matches "NotWorkingClass"
This approach circumvents the need for the parser to fill freeName correctly and directly handles the class name. Try this adjustment in your code to see if it resolves the issue with NotWorkingClass expressions not triggering the hook.
I am going to attach my piece of code......
tell me if it helps you if not then we will work on this issue more
from webpack.
Related Issues (20)
- Implement ability to use "node:" prefixes for Node.js core modules HOT 1
- mangled exports breaks with destructuring assignment of JSON imports HOT 7
- there are confusing JDocs code
- Potential bug issues
- Webpack is not resolving node_modules specified in `resolve.modules` property.
- Dynamically loading chunks
- [Code implementation issues] ArrayQueue
- [feature] create cli HOT 3
- Not able to build node script
- bootstrap:27 Uncaught TypeError: __webpack_require__.nmd is not a function
- Self-reference dependency has unused export name when imported inside of a web worker
- support `import.meta.dirname` and `import.meta.filename` HOT 3
- <!-- identifier: admin-actions -->
- Remote into Web Component from React giving an error saying " Module does not exist in container"
- Multiple DefinePlugin instances cause aggressive cache invalidation due to collisions HOT 7
- import .scss build to js, the exported mapping is inconsistent with the usage【Urgent!!】
- Unused code elimination and deduplication is not applied when using sass's api: 'legacy' setting
- In cli, why no option named "--output-file-name" ?
- Need help with migrating a custom middleware from v3 to v5 of webpack-dev-server HOT 1
- Module federation: the usage of "dynamic remotes" will cause blank screen when working with `runtimeChunk`
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from webpack.