J'essaie de faire quelque chose de très similaire à exemple de chemin jquery dans la documentation, mais TS continue de lancer TS2307
(webpack compile très bien):
"compilerOptions": {
"baseUrl": "./src",
"paths": {
"@client": [
"client",
],
"@suir": [
"../node_modules/semantic-ui-react/dist/commonjs", // not working
],
},
// …
},
"include": [
"*.d.ts",
"client/**/*",
"../node_modules/semantic-ui-react", // is this necessary?
],
Modification de baseUrl
en "."
et la mise à jour includes
et paths
ne fait aucune différence (@client
continue de fonctionner et @suir
ne fonctionne toujours pas).
En changeant "@suir"
à "@suir/"
ou "@suir/*"
(et en ajoutant /*
à sa valeur) ne fait également aucune différence.
La raison pour laquelle je fais cela est de simplifier mes importations (je les spécifie explicitement au lieu d'extraire les exportations nommées du bundle afin de réduire la taille de mon bundle fournisseur - économise environ 1 Mo):
import Button from 'semantic-ui-react/dist/commonjs/elements/Button'; // works
import Button from '@suir/elements/Button'; // not found
Je ne sais pas pourquoi cela fonctionne maintenant la onzième fois que j'ai essayé (mais pas les 10 premiers), mais le /*
semble être la sauce secrète, et l'exemple dans les documents pointe apparemment vers un fichier spécifique (et l'extension de fichier est omise).
{
"compilerOptions": {
"baseUrl": "./src",
"moduleResolution": "node", // was not set before, but is the default
"paths": {
"@client/*": [
"client/*",
],
"@suir/*": [ // notice the `/*` at the end
"../node_modules/semantic-ui-react/dist/commonjs/*", // notice the `/*`
],
},
// …
},
"include": [
"./src/client/**/*",
],
}