typescript - cdk synth: No se puede encontrar el módulo al intentar cambiar de una importación de ruta relativa a una importación de ruta absoluta
Estoy cambiando de la importación de ruta relativa a la importación de ruta absoluta para mi paquete CDK, y obtengo este error al ejecutar cdk synth:
cdk synth
Error: Cannot find module 'lib/CodePipelineStack'
Seguí esto usando rutas absolutas en TypeScript para las importaciones para configurar el baseUrl y paths en el archivo tsconfig.json.
No estoy seguro de por qué no está funcionando.
Más contexto
La estructura de mi proyecto se ve así:
Mi tsconfig.json es:
{
"compilerOptions": {
"baseUrl": ".",
"paths": {
"bin/*": [ "./bin/*" ],
"lib/*": [ "./lib/*" ],
"test/*": [ "./test/*" ]
},
"target": "ES2018",
"module": "commonjs",
"lib": [
"es2018"
],
"declaration": true,
"strict": true,
"noImplicitAny": true,
"strictNullChecks": true,
"noImplicitThis": true,
"alwaysStrict": true,
"noUnusedLocals": false,
"noUnusedParameters": false,
"noImplicitReturns": true,
"noFallthroughCasesInSwitch": false,
"inlineSourceMap": true,
"inlineSources": true,
"experimentalDecorators": true,
"strictPropertyInitialization": false,
"typeRoots": [
"./node_modules/@types"
]
},
"exclude": [
"node_modules",
"cdk.out"
]
}
Intenté "baseUrl": "./" y "baseUrl": ".", ninguno está funcionando.
Respuesta #1
cdk synth utiliza ts-node internamente. ts-node requiere un paquete adicional (tsconfig-paths) y algo de configuración adicional para cargar módulos según tu configuración de paths en tsconfig.json:
{
"ts-node": {
"require": ["tsconfig-paths/register"]
}
}
Documentación adicional: https://github.com/TypeStrong/ts-node#paths-and-baseurl
Tu tsconfig.json final se vería así:
{
"compilerOptions": {
"baseUrl": ".",
"paths": {
"bin/*": [ "./bin/*" ],
"lib/*": [ "./lib/*" ],
"test/*": [ "./test/*" ]
},
"target": "ES2018",
"module": "commonjs",
"lib": [
"es2018"
],
"declaration": true,
"strict": true,
"noImplicitAny": true,
"strictNullChecks": true,
"noImplicitThis": true,
"alwaysStrict": true,
"noUnusedLocals": false,
"noUnusedParameters": false,
"noImplicitReturns": true,
"noFallthroughCasesInSwitch": false,
"inlineSourceMap": true,
"inlineSources": true,
"experimentalDecorators": true,
"strictPropertyInitialization": false,
"typeRoots": [
"./node_modules/@types"
]
},
"exclude": [
"node_modules",
"cdk.out"
],
"ts-node": {
"require": ["tsconfig-paths/register"]
}
}
Respuesta #2
Para Windows/no funciona. Podrías usar ya sea "sh ./.." o usar la barra invertida \
