打字稿/ESLint 错误:无法解析模块“aws-lambda”导入/未解析的路径

时间:2020-12-19 11:44:36

标签: typescript eslint typescript-typings typescript-eslint

我有一个用打字稿编写的无服务器项目。当我运行 ESLint 时,出现以下错误:

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

对于以下代码行:import { APIGatewayProxyEvent, APIGatewayProxyHandler, APIGatewayProxyResult } from 'aws-lambda';(我的 devDependencies 中有 "@types/aws-lambda": "^8.10.64")。

我不明白可能是什么错误,因为类型已安装,如果我尝试从“@types/aws-lambda”导入,VS Code 会告诉我直接从“aws-lambda”导入。

请问我在这里做错了什么?

3 个答案:

答案 0 :(得分:1)

这是我的 .eslintrc 文件中的配置

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

此外,我还注意到您在 tsconfig.json 文件中没有包含 typeRoots,因为您在 node_modules 属性中排除了 exclude。应该是这样的

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

如果所有这些都失败了,最后的办法就是将其添加到 .eslintrc 文件中的忽略列表中。

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

答案 1 :(得分:0)

如果我在定义类型时使用 AWSLambda.APIGatewayProxyEvent,它对我有用:

const event: AWSLambda.APIGatewayProxyEvent = ...

我不需要修改任何东西。

答案 2 :(得分:0)

hendrixchord 的 anwser 帮助我解决了这个问题,但这里是对我真正有用的必要步骤的精简版:

# 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

.eslintrc 文件中(注意我使用的是 .js 版本):

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