我在我的文件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;
在我的例子中,ESLint不能解析从DefinitelyTyped (@type/ packages)安装的类型,所以我必须像这样在.eslintrc中指定在哪里找到它们:
"import/resolver": {
"typescript": {},
"node": {
"extensions": [".js", ".ts"],
"paths": ["node_modules/", "node_modules/@types"]
}
},
我还添加了"typescript":{},这基本上是为了使用tsconfig中的配置。我已经安装了eslint-import-resolver-typescript,让它工作。
当使用"eslint": "6.8.0"和"typescript": "3.8.3"时,除了在.eslintrc中添加以下内容:
"settings": {
"import/resolver": {
"node": {
"paths": ["src"],
"extensions": [".js", ".jsx", ".ts", ".tsx"],
}
},
}
您还需要将这一行添加到tsconfig。编译选项下的json:
"compilerOptions": {
...
// Base directory to resolve non-relative module names.
"baseUrl": "src",
...
}
当为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列表)