I am trying to make my own cli version of https://github.com/githubocto/repo-visualizer, and bundle it with tsup. This means bundling for node, while including react for svg rendering.
My current config includes:
{
skipNodeModulesBundle: true,
'--': [],
entry: [ 'src/index.tsx', 'src/cli.tsx' ],
inject: [ './inject-react-import.js' ],
external: [ 'react' ],
format: [ 'esm', 'cjs', 'iife' ],
silent: true,
minify: true,
incremental: true,
dts: true,
sourcemap: true,
clean: false,
splitting: false
}
and the ./inject-react-import.js
is:
import * as React from "react";
export { React };
This error was actually quite hard to find any info on. However, I believe the root cause is from https://github.com/egoist/tsup/blob/da9011f924e5b628505498cf8866b91a09208fe3/src/esbuild/native-node-module.ts
The full error message is:
β [ERROR] Could not resolve "/Users/jlarmst/Desktop/monorepos/turbo-monorepo/node_modules/react-dom/server.node.js"
node-file:/Users/jlarmst/Desktop/monorepos/turbo-monorepo/node_modules/react-dom/server.node.js:2:27:
2 β import path from "/Users/jlarmst/Desktop/monorepos/turbo-monorepo/node_modules/react-dom/server.node.js"
β΅ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The plugin "native-node-modules" didn't set a resolve directory for the file
"node-file:/Users/jlarmst/Desktop/monorepos/turbo-monorepo/node_modules/react-dom/server.node.js",
so esbuild did not search for
"/Users/jlarmst/Desktop/monorepos/turbo-monorepo/node_modules/react-dom/server.node.js" on the
file system.
IIFE Build failed
Error: Build failed with 1 error:
node-file:/Users/jlarmst/Desktop/monorepos/turbo-monorepo/node_modules/react-dom/server.node.js:2:27: ERROR: Could not resolve "/Users/jlarmst/Desktop/monorepos/turbo-monorepo/node_modules/react-dom/server.node.js"
at failureErrorWithLog (/Users/jlarmst/Desktop/monorepos/turbo-monorepo/node_modules/esbuild/lib/main.js:1605:15)
at /Users/jlarmst/Desktop/monorepos/turbo-monorepo/node_modules/esbuild/lib/main.js:1251:28
at runOnEndCallbacks (/Users/jlarmst/Desktop/monorepos/turbo-monorepo/node_modules/esbuild/lib/main.js:1036:63)
at buildResponseToResult (/Users/jlarmst/Desktop/monorepos/turbo-monorepo/node_modules/esbuild/lib/main.js:1249:7)
at /Users/jlarmst/Desktop/monorepos/turbo-monorepo/node_modules/esbuild/lib/main.js:1358:14
at /Users/jlarmst/Desktop/monorepos/turbo-monorepo/node_modules/esbuild/lib/main.js:668:9
at handleIncomingPacket (/Users/jlarmst/Desktop/monorepos/turbo-monorepo/node_modules/esbuild/lib/main.js:765:9)
at Socket.readFromStdout (/Users/jlarmst/Desktop/monorepos/turbo-monorepo/node_modules/esbuild/lib/main.js:635:7)
at Socket.emit (events.js:400:28)
at addChunk (internal/streams/readable.js:293:12)
My current workarounds include using:
import ReactDOMServer from "react-dom/server.js";
not
import ReactDOMServer from "react-dom/server";
and removingiife
from tsupConfig.format
entirely.
Also, tsup really seems to hate lodash
, and only lodash-es
seems to work. Makes migrating old code more difficult.
Possibly related evanw/esbuild#1051
Pay now to fund the work behind this issue.
Get updates on progress being made.
Maintainer is rewarded once the issue is completed.
You're funding impactful open source efforts
You want to contribute to this effort
You want to get funding like this too