microsoft / microsoft/TypeScript
Mechanism to specify input source location to find `package.json` instead of output source location when determining module format
Ouverte
Personne n'a encore pris cette issue.
Needs Proposal
Suggestion
- Langage dominant
- Go
- Étoiles
- 111k
- Forks
- 14.3k
- Merge moyen
- 2 j 4 h
- PR mergées (30 j)
- 132
Description
🔎 Search Terms
nodenext, ts2351, construct
🕗 Version & Regression Information
- This is the behavior in every version I tried, and I reviewed the FAQ for entries about "A default import of a commonjs module with a default in a esm file doesn't seem to be the default export of that module when module is node16 or nodenext".
⏯ Playground Link
N/A
💻 Code
git clone https://github.com/monsanto/typescript-nodenext-bug
cd typescript-nodenext-bug
npm install
npm run tsc
🙁 Actual behavior
foo/index.ts:6:5 - error TS2351: This expression is not constructable.
Type 'typeof import("<dir>/typescript-nodenext-bug/.cache/foolib/class")' has no construct signatures.
6 new CBad();
~~~~
Found 1 error.
🙂 Expected behavior
It succeeds.
Additional information about the issue
- This issue requires a composite project,
NodeNext, a package boundary, a default export, and a parent directory with a file package.{json, json5, yaml} withouttype:module.- Please note that import default inside
foo's package boundary works. - One can delete the provided package.json after installing and run
node_modules/typescript/bin/tsc --build tsconfig-base.jsonto test withoutpackage.jsonpresent. - One can see other package extensions trigger the bug by
mv package.json package.yamlandpnpm run tsc.
- Please note that import default inside
- This is not a CommonJS project. It doesn't matter that there is a parent
package.jsonwithout it. Node doesn't even readpackage.yaml.- This is from a real-world monorepo where there is a root pnpm
package.json5for cross-package scripts.
- This is from a real-world monorepo where there is a root pnpm
Cross-ref for #62200
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Commencez par la reproduction liée de typescript-nodenext-bug : exécutez npm install et npm run tsc, puis examinez tsconfig-base.json ainsi que les variantes de package.json, package.json5 et package.yaml décrites dans l’issue. Comparez le résultat du format de module NodeNext lorsque les métadonnées du package parent sont présentes ou absentes ; le travail est terminé lorsque la reproduction réussit sans TS2351.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- node.js, typescript
- Domaine
- build-system, compilers
- Type d'issue
- Bug
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 35/100