Использование eslint с машинописью - невозможно определить путь к модулю - PullRequest
10 голосов
/ 16 марта 2019

У меня есть этот импорт в моем файле app.spec.ts :

import app from './app';

Что вызывает эту ошибку Typescript

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

. / App.ts существует, но я не скомпилировал файл .ts в файл .js. Как только я скомпилирую файл .ts в .js, ошибка исчезнет.

Однако, поскольку предполагается, что eslint работает с машинописью, он должен разрешать модули с .ts, а не с .js.

Я также добавил информацию о машинописи в файле конфигурации eslint:

"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;

Ответы [ 3 ]

29 голосов
/ 21 марта 2019

Вы можете установить разрешение импорта модуля ESLint, добавив этот фрагмент в файл конфигурации .eslintrc.json:

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

Больше информации о резольверах: https://github.com/benmosher/eslint-plugin-import#resolvers

Надеюсь, это поможет.

0 голосов
/ 21 июня 2019

У меня была та же проблема, и я смог ее исправить только с помощью

"plugin:import/errors",
"plugin:import/warnings",
"plugin:import/typescript",

в разделе "extends" в .eslintrc.js, как описано здесь eslint-plugin-import

0 голосов
/ 16 мая 2019

для тех, кто использует babel-module, просто добавьте extensions, чтобы это было примерно так:

      "babel-module": {
        "extensions": [".js", ".jsx", ".ts", ".tsx"],
        "alias": {
          "app": "./app"
        }
      }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...