microsoft / microsoft/TypeScript
tsc does not use amd-module name when emitting dynamic imports
Personne n'a encore pris cette issue.
- Langage dominant
- Go
- Étoiles
- 111k
- Forks
- 14.4k
- Merge moyen
- 1 j 19 h
- PR mergées (30 j)
- 117
Description
TypeScript Version: 3.3.0-dev.20190118
Search Terms: amd-module, optional, dynamic, directive
Code
Scripts/foo.ts
///<amd-module name="customNameFoo" />
export function hello() {
console.log('hello world');
}
Scripts/bar.ts
///<amd-module name="customNameBar" />
async function myFunction(): Promise<void> {
//Dynamically import foo
var fooModule = await import('./foo');
fooModule.hello();
}
tsconfig.json
{
"compileOnSave": true,
"compilerOptions": {
"target": "es5",
"outDir": "GeneratedScripts",
"module": "amd",
"lib": [
"es2015.promise",
"dom",
"es5",
"scripthost"
]
},
"include": [
"Scripts/**/*"
],
"exclude": [
"GeneratedScripts"
]
}
would expect that the call to require would use the amd-module name for foo ("customNameFoo") and not "./foo". (If we non-dynamically imported foo, then the generated 'define' would refer to foo by it's amd-module name)
GeneratedScripts/bar.js
//...
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, new Promise(function (resolve_1, reject_1) { require(['./foo'], resolve_1, reject_1); })];
case 1:
fooModule = _a.sent();
fooModule.hello();
return [2 /*return*/];
}
});
Expected behavior: The generated amd code for a dynamic import should use the name of the module specified in the amd-module directive
Actual behavior: The generated code for the dynamic import uses relative path to the module
Related Issues:
https://github.com/Microsoft/TypeScript/pull/1158
https://github.com/Microsoft/TypeScript/issues/28760
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
Reproduisez le problème avec Scripts/foo.ts, Scripts/bar.ts et tsconfig.json, puis examinez le point d’entrée du compilateur pour l’émission des importations dynamiques AMD. Comparez GeneratedScripts/bar.js avec la sortie attendue ; la tâche est terminée lorsque l’appel require généré utilise le nom de module AMD personnalisé customNameFoo de foo au lieu de './foo'.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- typescript
- Domaine
- compilers
- Type d'issue
- Bug
- Difficulté
- 3/5
- Temps estimé
- 1-2 jours
- Activité
- À l'abandon
- Clarté
- Clairement spécifiée
- Accessibilité débutants
- 48/100