fix(build): substituir tsc-alias por tsup para resolver ESM no Node.js#18
Merged
Conversation
O Node.js ESM exige extensoes .js explicitas nos imports, mas o tsc com moduleResolution Bundler emite imports sem extensao. tsc-alias resolvia os aliases @/ mas nao adicionava extensoes, causando ERR_MODULE_NOT_FOUND. Substitui por tsup que bundla o entry point resolvendo aliases via tsconfig paths e emitindo ESM valido para Node.js. Output: dist/servidor.js (65 KB). Atualiza start para node dist/servidor.js.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
tsc && tsc-aliaswithtsupas the build tooltsupbundles the entry point (src/infra/http/servidor.ts) intodist/servidor.js, resolving@/path aliases via tsconfigpathsand emitting valid ESM with correct extensionsstartscript fromnode dist/infra/http/servidor.jstonode dist/servidor.jsRoot cause (two-step failure)
Cannot find package '@/infra'—tscemits@/aliases unchanged; Node.js ESM interprets@/as a scoped npm packageCannot find module '.../dist/infra/http/aplicacao'—tsc-aliasrewrote aliases to relative paths but without.jsextensions; Node.js ESM strict mode requires explicit extensionsBoth failures share the same root cause:
tscwithmoduleResolution: "Bundler"is designed for bundlers (Vite, webpack, esbuild), not direct Node.js execution.tsup(esbuild-based) is the correct tool for this output target.Output
Test plan
pnpm build— confirmdist/servidor.jsis generated with no@/aliases and no extensionless relative importspnpm typecheck && pnpm test— all 359 tests passingERR_MODULE_NOT_FOUND🤖 Generated with Claude Code