Использование eslint с машинописью - невозможно определить путь к модулю
У меня есть этот импорт в моем файле app.spec.ts:
import app from './app';
Что вызывает эту ошибку машинописного текста
2:17 error Unable to resolve path to module './app' import/no-unresolved
./app.ts существует, но я не скомпилировал файл .ts в файл .js. Как только я скомпилирую файл .ts в .js, ошибка исчезнет.
Однако, поскольку предполагается, что eslint работает с машинописью, он должен разрешать модули с помощью .ts, а не .js.
Я также добавил информацию о машинописи в моем eslint
конфигурации 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;
Ответы
Ответ 1
Вы можете установить разрешение импорта модуля ESLint, добавив этот фрагмент в .eslintrc.json
конфигурации .eslintrc.json
:
{
"settings": {
"import/resolver": {
"node": {
"extensions": [".js", ".jsx", ".ts", ".tsx"]
}
}
},
...
}
Больше информации о резольверах: https://github.com/benmosher/eslint-plugin-import#resolvers
Надеюсь, поможет.
Ответ 2
У меня была такая же проблема, и я смог исправить только с помощью
"plugin:import/errors",
"plugin:import/warnings",
"plugin:import/typescript",
под "extends" в .eslintrc.js, как описано здесь eslint-plugin-import
Ответ 3
для тех, кто использует babel-module
просто добавьте extensions
чтобы они были примерно такими:
"babel-module": {
"extensions": [".js", ".jsx", ".ts", ".tsx"],
"alias": {
"app": "./app"
}
}
Ответ 4
Это делает это для меня:
.eslintrc.js
{
...
settings: {
...
'import/resolver': {
node: {
extensions: ['.js', '.jsx', '.ts', '.tsx'],
moduleDirectory: ['node_modules', 'src/'],
},
},
}
}