Búsqueda de sitios web

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 \