Hi,
im hitting the same problem. As soon as I upgrade the pdfjs 4.x it crashes “Class private methods are not enabled. Please add @babel/plugin-transform-private-methods
to your configuration.”
It makes no difference if I install from npm oder build it mysqld from pdfjs github source code.
How can I enable those babel plugins? Using an old 3.x version of pdfjs is not good, since its very old and has vulnerabilities.
Thanks
Did you build yourself from source for legacy?
Yes, I tried legacy as well as generic.
npx gulp generic
npx gulp generic-legacy
Doesn’t make a difference
I think I have made progress on this. But first let’s link to some posts that all point to the same problem:
- Meteor 3.0-rc.1 is out! - #14 by nigelcunningham
- [Solved] Conditional Chaining in NPM package - #4 by marklynch
- Transpile certain node_modules with Babel at Meteor-Build - #5 by crapthings
In short, package.json#meteor.nodeModules.recompile
does not honor the babel configuration for the source files (.babelrc
or package.json#babel
), it just uses whatever is the default babel configuration that ships with Meteor. I figured this out by fiddling with the code under node_modules/@babel/*
which runs for source files but not files under node_modules
. The code that seems to run for recompiled node modules is under .meteor/local/dev_bundle/lib/node_modules/@babel/*
.
Note that package.json#meteor.nodeModules.recompile
is not documented for Meteor 3.0, but the problem was already present in Meteor 2.16.
The only working solution is the one suggested at Transpile certain node_modules with Babel at Meteor-Build - #2 by macrozone symlink the node_modules
source files into your application source files to subject them to the same babel config. Currently evaluating if there are any drawbacks.
@nachocodoner Is the modern builder of Meteor 3.3 designed in the same way? With different rules for sources and recompiled NPM packages?
I’m not entirely sure about this use case. Since SWC only replaces Babel at compile time, I think recompilation and other configs should work the same way. I’ll revisit this to understand the behavior and its implications.
So your issue is that these recompilations aren’t picking up your custom .babelrc in legacy mode or your .swcrc in modern mode?
Root cause for my problem seems to be described here: Allow private methods on the server. · meteor/meteor · Discussion #13272 · GitHub.
Another GitHub issue referencing this problem:
The solution proposed by @captainn does not solve the root problem, it only suggests transforming import statements in the app sources themselves.
Same problem here, but with local Meteor packages: