plugins icon indicating copy to clipboard operation
plugins copied to clipboard

[node-resolve] Can not resolve exports of "typeorm"

Open SyraTi opened this issue 1 year ago • 2 comments

  • Rollup Plugin Name: node-resolve
  • Rollup Plugin Version: 15.2.1
  • Rollup Version: 3.29.0
  • Operating System (or Browser): MacOS Monterey
  • Node Version: 18
  • Link to reproduction (⚠️ read below): https://github.com/SyraTi/node-resolve-typeorm-demo
  • How to reproduce: git clone & npm run build

Expected Behavior

typeorm be packed into bundle

Actual Behavior

typeorm cannot be resolved:

(!) Plugin node-resolve: Could not resolve import "typeorm" in /Users/syra_ti/Documents/projects/gensou-studio/rollup-with-typeorm/src/entities/subscription.ts using exports defined in /Users/syra_ti/Documents/projects/gensou-studio/rollup-with-typeorm/node_modules/typeorm/package.json.
(!) Plugin node-resolve: Could not resolve import "typeorm" in /Users/syra_ti/Documents/projects/gensou-studio/rollup-with-typeorm/src/datasource.ts using exports defined in /Users/syra_ti/Documents/projects/gensou-studio/rollup-with-typeorm/node_modules/typeorm/package.json.
(!) Unresolved dependencies
https://rollupjs.org/troubleshooting/#warning-treating-module-as-external-dependency
typeorm (imported by "src/entities/subscription.ts" and "src/datasource.ts")

Additional Information

I guess the problem is about "exports" field resolving in typeorm/package.json. I've read some related issue&pr below: https://github.com/rollup/plugins/issues/1548 https://github.com/rollup/plugins/pull/1549 and tried allowExportsFolderMapping option but not working.

SyraTi avatar Sep 08 '23 05:09 SyraTi

@SyraTi Really strange behaviour. I have also used rollup for a typeorm extension, but not the typescript plugin and it works there. Maybe you can get some useful information from the repo. https://github.com/tada5hi/typeorm-extension

tada5hi avatar Sep 15 '23 10:09 tada5hi

I have recently come across this same issue. I solved this by setting the exportConditions option to ["node"]. For example:

  plugins: [
    // ...
    nodeResolve({
      exportConditions: ["node"],
    }),
  ],

jens1101 avatar Apr 26 '24 20:04 jens1101