Open jogibear9988 opened 2 years ago
tslib.es6.js
predates NodeJS's support for ES Modules. If you change the "import"
directive in the export map as you've proposed, NodeJS will attempt to load the file as a CommonJS module, resulting in the following error:
SyntaxError Unexpected token 'export'
The tslib.es6.js
file can be used in the browser, but not in NodeJS.
We currently use "import": "./modules/index.js",
as that file is in a directory with a package.json
that includes { "type": "module" }
so that NodeJS will treat it as an ES Module. That file simply re-exports the CommonJS tslib.js
module.
From our tests, this is working as expected. What is the actual issue you are running into?
My problem is, I don't use a package manager, I host directly the javascript emited from typescript, and this points to "./node_modules/tslib". Now my webserver follows the resolution strategy and rewrites the import to tslib.js, cause there is no definition of "module" for the export in the spec of nodejs
Maybe switching the package.json to type"module" would fix this? so the export with "main" and "require" should point to a comonJS module then, and the rest to es6?
We can't change the root package.json
in tslib to "type": "module"
without breaking tslib.js
. That's the reason we have a modules
folder that has its own package.json
.
Will #171 address your needs?
I think this would work.
thx
Is there hope of getting this resolved even thought #171 has a disapproval?
As far as I know, "module"
isn't one of the standard export conditions, and "import"
is the condition that should point to a standard JS module.
We're hitting issues where we load tslib as a standard module, and get the error:
The requested module '../tslib' does not provide an export named 'default'
I think the "import" specifier in the exports section should also point to ES6 Version:
https://github.com/microsoft/tslib/blob/481d35218af580ec37a6a8f6b836b80cb1a245b3/package.json#L32
see spec: https://nodejs.org/api/packages.html#approach-1-use-an-es-module-wrapper
so there is no "module" specifier, but it is often used, I know. But if I want to import acording to spec, my site would load the one with "import" and then it would fail cause this is not usable by imports