我在我的文件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;

当前回答

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

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

下面是规则

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

其他回答

对于那些使用babel-module的人来说,只要添加扩展,它就会像这样:

      "babel-module": {
        "extensions": [".js", ".jsx", ".ts", ".tsx"],
        "alias": {
          "app": "./app"
        }
      }

在我的例子中,ESLint不能解析从DefinitelyTyped (@type/ packages)安装的类型,所以我必须像这样在.eslintrc中指定在哪里找到它们:

"import/resolver": {
    "typescript": {},
    "node": {
        "extensions": [".js", ".ts"],
        "paths": ["node_modules/", "node_modules/@types"]
    }
},

我还添加了"typescript":{},这基本上是为了使用tsconfig中的配置。我已经安装了eslint-import-resolver-typescript,让它工作。

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

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

下面是规则

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

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

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

在我的例子中,我必须删除eslint缓存,然后它就像魔法一样工作了。(我们的纱线脚本是

"lint:eslint": "eslint。"——cache——cache-location '../../eslintcache/'——format stylish"

.)