Open varugasu opened 21 hours ago
Vitest cannot process ES modules that were imported using require
because ES module transformation is asynchronous.
To bypass that, you can enable the optimizer:
export default defineConfig({
test: {
deps: {
web: {
enabled: true,
include: ['lib'],
},
},
},
})
Hey @sheremet-va , thank you for responding. I tried applying it and it also didn't work
esm-only
is packaged as ESM but with.js
extension and I can't control how this library bundled
@varugasu Assuming your esm-only
is only for the purpose of repro, what is the actual npm package you use?
Also what is the reason you have node
condition which directs to cjs? How about doing it like this?
"exports": {
".": {
"require": "./dist/index.cjs",
"import": "./dist/index.mjs",
"types": "./dist/index.d.ts"
},
"./*": {
"require": "./dist/*/index.cjs",
"import": "./dist/*/index.mjs",
"types": "./dist/*/index.d.ts"
}
},
Describe the bug
I was creating a library with
unbuild
usingrollup
and generatingdist/*.cjs
anddist/*.mjs
files. As I didn't want to import directly fromlib/dist
, I created the followingpackage.json
:This
lib
depends on another lib,esm-only
.esm-only
is packaged as ESM but with.js
extension and I can't control how this library bundledMy App project uses
lib
. When I ran vitest on my App project, I got this error:The only thing I was able to make it work was to change
lib/package.json
to:And then change
src/lib.test.ts
to:But as you can see, I have
lib/dist/utils
, I want to be able to importlib/utils
instead.Another option is to change
lib/build.config.ts
to usemkdist
:And my
lib/package.json
to:Finally, this ONLY DOESN'T work on Vitest. On Vite I can normally run both in dev and production mode.
Related issues:
server.deps.inline
but it didn't workReproduction
I created this repository to reproduce the issue I was having in another project: https://github.com/varugasu/node-packages
esm-only
, thenpnpm build
lib
, thenpnpm build
app
, thenpnpm test
System Info
Used Package Manager
pnpm
Validations