Rollup/yarn 2 plugin import error
jeeger opened this issue · 5 comments
I'm trying to create a new codemirror language, and I'm using yarn 2 and rollup. I've successfully built lang-sql
with yarn 1, but changing configuration to yarn 2 leads to an error.
$ git clone git@github.com:codemirror/lang-sql.git .
$ yarn
<success>
$ yarn set version berry
$ yarn prepare
[!] Error: Qualified path resolution failed - none of the candidates can be found on the disk.
Source path: /home/jeeger/projects/javascript/codemirror-sql/.yarn/cache/lezer-generator-npm-0.13.3-8a5a172e1d-17078428db.zip/node_modules/lezer-generator/rollup
Rejected candidate: /home/jeeger/projects/javascript/codemirror-sql/.yarn/cache/lezer-generator-npm-0.13.3-8a5a172e1d-17078428db.zip/node_modules/lezer-generator/rollup
Rejected candidate: /home/jeeger/projects/javascript/codemirror-sql/.yarn/cache/lezer-generator-npm-0.13.3-8a5a172e1d-17078428db.zip/node_modules/lezer-generator/rollup.js
Rejected candidate: /home/jeeger/projects/javascript/codemirror-sql/.yarn/cache/lezer-generator-npm-0.13.3-8a5a172e1d-17078428db.zip/node_modules/lezer-generator/rollup.json
Rejected candidate: /home/jeeger/projects/javascript/codemirror-sql/.yarn/cache/lezer-generator-npm-0.13.3-8a5a172e1d-17078428db.zip/node_modules/lezer-generator/rollup.node
Require stack:
- /home/jeeger/projects/javascript/codemirror-sql/rollup.config.js
- /home/jeeger/projects/javascript/codemirror-sql/.yarn/cache/rollup-npm-2.39.0-d94e133c08-b504b080e4.zip/node_modules/rollup/dist/shared/loadConfigFile.js
- /home/jeeger/projects/javascript/codemirror-sql/.yarn/cache/rollup-npm-2.39.0-d94e133c08-b504b080e4.zip/node_modules/rollup/dist/bin/rollup
Error: Qualified path resolution failed - none of the candidates can be found on the disk.
Source path: /home/jeeger/projects/javascript/codemirror-sql/.yarn/cache/lezer-generator-npm-0.13.3-8a5a172e1d-17078428db.zip/node_modules/lezer-generator/rollup
Rejected candidate: /home/jeeger/projects/javascript/codemirror-sql/.yarn/cache/lezer-generator-npm-0.13.3-8a5a172e1d-17078428db.zip/node_modules/lezer-generator/rollup
Rejected candidate: /home/jeeger/projects/javascript/codemirror-sql/.yarn/cache/lezer-generator-npm-0.13.3-8a5a172e1d-17078428db.zip/node_modules/lezer-generator/rollup.js
Rejected candidate: /home/jeeger/projects/javascript/codemirror-sql/.yarn/cache/lezer-generator-npm-0.13.3-8a5a172e1d-17078428db.zip/node_modules/lezer-generator/rollup.json
Rejected candidate: /home/jeeger/projects/javascript/codemirror-sql/.yarn/cache/lezer-generator-npm-0.13.3-8a5a172e1d-17078428db.zip/node_modules/lezer-generator/rollup.node
Require stack:
- /home/jeeger/projects/javascript/codemirror-sql/rollup.config.js
- /home/jeeger/projects/javascript/codemirror-sql/.yarn/cache/rollup-npm-2.39.0-d94e133c08-b504b080e4.zip/node_modules/rollup/dist/shared/loadConfigFile.js
- /home/jeeger/projects/javascript/codemirror-sql/.yarn/cache/rollup-npm-2.39.0-d94e133c08-b504b080e4.zip/node_modules/rollup/dist/bin/rollup
at internalTools_makeError (/home/jeeger/projects/javascript/codemirror-sql/.pnp.cjs:7063:34)
at resolveUnqualified (/home/jeeger/projects/javascript/codemirror-sql/.pnp.cjs:8102:13)
at resolveRequest (/home/jeeger/projects/javascript/codemirror-sql/.pnp.cjs:8126:14)
at Object.resolveRequest (/home/jeeger/projects/javascript/codemirror-sql/.pnp.cjs:8198:26)
at Function.external_module_.Module._resolveFilename (/home/jeeger/projects/javascript/codemirror-sql/.pnp.cjs:7296:34)
at Function.external_module_.Module._load (/home/jeeger/projects/javascript/codemirror-sql/.pnp.cjs:7161:48)
at Module.require (internal/modules/cjs/loader.js:952:19)
at require (internal/modules/cjs/helpers.js:88:18)
at Object.<anonymous> (/home/jeeger/projects/javascript/codemirror-sql/rollup.config.js:6:14)
at Module._compile (internal/modules/cjs/loader.js:1063:30)
The problem seems to be the extra dist
directory in the lezer-generator-npm
package. Is there a way to work around this error?
I really have no idea—as far as I'm aware lezer-generator
is a valid npm package. I don't know why yarn 2 would have trouble loading it.
I think the problem is that lezer-generator does not reference src/rollup-plugin-lezer.ts
in src/index.ts
, and thus it's not included in the file generated by rollup when the package is built.
I've managed to work around it by using import {lezer} from "lezer-generator/dist/rollup-plugin-lezer.cjs"
, but that took some working around.
I think the problem is that lezer-generator does not reference src/rollup-plugin-lezer.ts in src/index.ts, and thus it's not included in the file generated by rollup when the package is built.
No, that's intentional. It's distributed in dist/rollup-plugin-lezer.{cjs,es.js}, and should be included as "lezer-generator/rollup"
. Is it possible that some tool you're using just doesn't handle the exports
field in package.json yet?
From my reading of the yarn 1 and 2 documentation, neither of them knows about a "exports" field in package.json, so I think I'm misunderstanding here.
Since I was able to produce the bug with a official project, I think there's a misconfiguration/compatibility issue somewhere in the build system. If you think incompatibility with yarn 2 is a bug, feel free to close this!
Yarn 2's PnP got exports
support in yarnpkg/berry#2431 but it hasn't been released yet, you can update to the source version and see if that fixes it.
yarn set version from sources