Dis*_*tum 9 node.js typescript eslint typescript-eslint
首先,一些事实:
import包含导入模块的扩展名(例如import hello from './hello.js',不是import hello from './hello')。import带或不带.js扩展名的 s,这意味着缺少.js扩展名是运行时错误。imports 以添加.js扩展名或转换.ts为.js.在我的 Node.js 项目中,我希望.js使用 ESLint 规则将缺少扩展名作为构建时错误import/extensions。但是,当我使用以下配置启用此规则时:
{
"root": true,
"env": {
"node": true
},
"parser": "@typescript-eslint/parser",
"plugins": [
"@typescript-eslint"
],
"extends": [
"eslint:recommended",
"plugin:import/recommended",
"plugin:import/typescript",
"plugin:@typescript-eslint/eslint-recommended",
"plugin:@typescript-eslint/recommended"
],
"settings": {
"import/resolver": {
"typescript": {},
"node": {
"extensions": [".js"]
}
}
},
"rules": {
"import/extensions": ["error", "ignorePackages"]
}
}
Run Code Online (Sandbox Code Playgroud)
运行eslint给我以下错误:
/sandbox/src/index.ts
1:19 error Missing file extension "ts" for "./hello.js" import/extensions
Run Code Online (Sandbox Code Playgroud)
源文件:
// index.ts
import hello from "./hello.js";
hello();
Run Code Online (Sandbox Code Playgroud)
// hello.ts
export default function hello() {
console.log("Hello");
}
Run Code Online (Sandbox Code Playgroud)
CodeSandbox 链接:https://codesandbox.io/s/elated-germain-13glp7
我用以下配置修复了这个问题:
{
"root": true,
"env": {
"node": true
},
"extends": [
"eslint:recommended",
"plugin:import/recommended",
"plugin:import/typescript",
"plugin:@typescript-eslint/eslint-recommended",
"plugin:@typescript-eslint/recommended"
],
"rules": {
"import/extensions": ["error", "ignorePackages"],
"import/no-unresolved": "off"
}
}
Run Code Online (Sandbox Code Playgroud)
最主要的是禁用"import/no-unresolved"规则并删除"settings"."import/resolver"."node". ("import/no-unresolved"这是多余的,因为未解决的导入在编译阶段已解决。)由于扩展插件,此处删除的其他项目已被添加@typescript-eslint。
| 归档时间: |
|
| 查看次数: |
11939 次 |
| 最近记录: |