我有一个用打字稿编写的无服务器项目。当我运行 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”导入。>
请问我在这里做错了什么?
答案 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,
},
},
},