我在我的文件app.spec.ts中有这个导入:

import app from './app';

是什么导致了这个Typescript错误

2:17  error  Unable to resolve path to module './app'  import/no-unresolved

/应用程序。ts确实存在,但我没有将.ts文件编译成.js文件。一旦我把.ts文件编译成.js文件,错误就消失了。

然而,由于eslint应该与typescript一起工作,它应该用.ts而不是.js来解析模块。

我还在eslint配置文件中添加了typescript信息:

"parser": "@typescript-eslint/parser",
"parserOptions": {
    "project": "./tsconfig.json"
}

我如何配置eslint在这样一种方式,它试图解决模块与.ts而不是.js?

编辑# 1

app.ts的内容:

import bodyParser from 'body-parser';
import express from 'express';
import graphqlHTTP from 'express-graphql';
import { buildSchema } from 'graphql';

const app = express();

const schema = buildSchema(`
    type Query {
        hello: String
    }
`);
const root = { hello: () => 'Hello world!' };

app.use(bodyParser());
app.use('/graphql', graphqlHTTP({
    schema,
    rootValue: root,
    graphiql: true,
}));

export default app;

当前回答

如果你已经更新了你的.eslintrc和tsconfig。Json文件的建议在其他答案,你仍然有问题-重新启动vscode。

其他回答

当为Angular导入语言环境文件时(例如从'@angular/common/locale /en';),我必须允许使用.mjs扩展名。

以下是我的.eslintrc.json的摘录:

  ...
  "extends": [
    ...
    "plugin:import/recommended",
    "plugin:import/typescript",
    ...
  ],
  "settings": {
    "import/resolver": {
      "node": {
        "extensions": [".ts", ".mjs"]
      }
    }
  },
  "rules": {
    ...
  }
  ...

编辑:

导入HttpCLient或HttpClientModule时,返回错误。 我发现加上。d。Ts扩展到列表修复了这个问题,这也比.mjs更有意义(不再需要)。

这是我新的.eslintrc.json:

  ...

  {
    "files": ["*.ts"],
    "parser": "@typescript-eslint/parser",
    "parserOptions": {
      "project": ["tsconfig.json"],
      "createDefaultProgram": true
    },
    "settings": {
      "import/resolver": {
        "node": {
          "extensions": [".ts", ".d.ts"]
        }
      }
    },
    "extends": [
      "eslint:recommended",
      "plugin:import/recommended",
      "plugin:import/typescript",
      "plugin:@typescript-eslint/recommended",
      "plugin:@angular-eslint/recommended",
      "plugin:@angular-eslint/ng-cli-compat",
      "plugin:@angular-eslint/ng-cli-compat--formatting-add-on",
      "plugin:@angular-eslint/template/process-inline-templates"
    ],
    "rules": {
      ...
    }
  }

  ...

(我使用@angular-eslint,但你可能有一个不同的extends列表)

就我而言,我只是需要改变

import { SetOptional, SetRequired } from 'type-fest';

to

import type { SetOptional, SetRequired } from 'type-fest';

你可以通过在你的.eslintrc.json配置文件中添加以下代码片段来设置ESLint模块的导入分辨率:

{
  "settings": {
    "import/resolver": {
      "node": {
        "extensions": [".js", ".jsx", ".ts", ".tsx"]
      }
    }
  },
  ...
}

有关解析器的更多信息:https://github.com/benmosher/eslint-plugin-import#resolvers。

首先在extends下面添加"plugin:import/typescript":

"extends": [
    "airbnb-base",
    "plugin:import/typescript"
 ],

下面是规则

"rules": {
        "import/extensions": [
            "error",
            "ignorePackages",
            {
                "ts": "never"
            }
        ]
    }

优秀的人知道如何在2022年通过在线程序解决这个问题:

"rules": {
  "import/extensions": [ "error", "ignorePackages", { "": "never" } ]
}