New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Make import.meta.url dynamic #14445
Comments
For maintainers only:
|
Duplicate #14072 |
The linked issue is about supporting This issue is about supporting dynamic |
But |
It is the build time location of the file and not the run time dynamic location of the JS file |
We are doing the same for |
Yes, but that behavior can be adjusted via https://webpack.js.org/configuration/node/#node__filename and https://webpack.js.org/configuration/node/#node__dirname We have those both set to I agree that #14072 is a completely orthogonal issue and that this should be reopened. |
Make sense to allow keeping it |
Any updates? |
Hi all, I tried to contribute new configuration option to fix this, but I struggle to make all tests work. I would appreciate some help. Also I wonder what is the use-case for the current behavior, with the file name from build time. Could somebody advise ? @vankop |
I'm affected by webpack/webpack#14445, fixed in webpack/webpack#15246, available in webpack >= [v5.68.0](https://github.com/webpack/webpack/releases/tag/v5.68.0), so I'd love to have an ncc version using webpack >= v5.68.0! Co-authored-by: Steven <steven@ceriously.com>
I have a lib, which is loaded by app through http:
and inside libfoo, it has to know whether it is loaded from in order to load other specific files for that server.
|
Bug report
What is the current behavior?
import.meta.url
is replaced by the current file location at the build time.https://github.com/webpack/webpack/blob/main/lib/dependencies/ImportMetaPlugin.js#L99
If the current behavior is a bug, please provide the steps to reproduce.
If you build
it will ouput a constant string (le location of the file on the current system).
This is problematic to build a project using yargs (https://github.com/yargs/yargs), as it uses
meta.import.url
(https://github.com/yargs/yargs/blob/main/lib/platform-shims/esm.mjs#L18).When building under an Unix file system,
meta.import.url
is replaced by something likefile:///path/to/your/project/src/index.js
. When trying to run the built code under a Windows filesystem, aTypeError [ERR_INVALID_FILE_URL_PATH]: File URL path must be absolute
is thrown, as the filename doesn't containfile://C:/...
.Making the
meta.import.url
variable dynamic (based on __dirname) should solve the problem.What is the expected behavior?
import.meta.url
should be based on__dirname
for cjs build, to keep the original intended behavior of the application developer.Other relevant information:
webpack version: 5.58.1
Node.js version: 16.10.0
Operating System: Ubuntu Linux 20.04
Additional tools: yargs
The text was updated successfully, but these errors were encountered: