Búsqueda de sitios web

Error de Typescript/ESLint: No se puede resolver la ruta al módulo 'aws-lambda' import/no-unresolved


Tengo un proyecto serverless escrito en TypeScript. Cuando ejecuto ESLint, obtengo el siguiente error:

  1:85  error  Unable to resolve path to module 'aws-lambda'  import/no-unresolved

Para la siguiente línea de código: import { APIGatewayProxyEvent, APIGatewayProxyHandler, APIGatewayProxyResult } from 'aws-lambda'; (tengo "@types/aws-lambda": "^8.10.64" en mis devDependencies).

No entiendo cuál podría ser el error, ya que la tipificación está instalada y si intento importar desde "@types/aws-lambda", VS Code me dice que importe directamente desde "aws-lambda".

¿Qué estoy haciendo mal aquí, por favor?

Respuesta #1

La respuesta de hendrixchord me ayudó a resolver el problema, pero aquí está la versión resumida de los pasos necesarios que realmente funcionaron para mí:

It's a must, otherwise the below `settings` won't work:
npm install --save-dev eslint-import-resolver-typescript
Not `--save-dev`.
npm install @types/aws-lambda

En el archivo .eslintrc (nota que estoy usando la versión .js):

  settings: {
    'import/resolver': {
      typescript: {
        alwaysTryTypes: true,
      },
    },
  },

Respuesta #2

Esta es la configuración en mi archivo .eslintrc

   "settings": {
        "import/parsers": {
            "@typescript-eslint/parser": [".ts", ".tsx"]
        },
        "import/resolver": {
            "typescript": {
                "alwaysTryTypes": true,
                "paths": "./tsconfig.json",
            },
        }
    },

También he notado que en tu archivo tsconfig.json no has incluido typeRoots ya que has excluido node_modules en tu propiedad exclude. Debería ser así

    "typeRoots": [
        "./node_modules/@types"
    ],
    "exclude": [
        "/node_modules/",
        ".serverless/**/*",
        ".webpack/**/*",
        "_warmup/**/*",
        "vscode/**/*",
        "lib/**/*",
        "tests"
    ]

Si todo eso falla, el último recurso sería agregarlo a la lista de exclusión en el archivo .eslintrc.

    "import/no-unresolved": [
        "error",
        {
            "ignore": [
                "aws-lambda"
            ]
        }
    ],

Artículos relacionados