在 CRA 2.1 Typescript 中导入时 ESLint 需要“.ts”

Posted

技术标签:

【中文标题】在 CRA 2.1 Typescript 中导入时 ESLint 需要“.ts”【英文标题】:ESLint requiring '.ts' when importing in CRA 2.1 Typescript 【发布时间】:2019-04-12 18:35:39 【问题描述】:

我刚刚在最新的 Create-react-app 版本中采用了 TypeScript,似乎eslint 要求我在导入 ts 文件时包含.ts

import spacing from "../css/spacing"; // eslint complains can't resolved path

import spacing from "../css/spacing.ts"; // fine

有什么方法可以让 .ts 在导入中成为可选的?

【问题讨论】:

【参考方案1】:

如果您使用.js,它应该在编译时、ESLint 扫描时和运行时工作。

ESLint 选择这一点的原因是某些浏览器需要其模块加载器的文件扩展名。

import spacing from "../css/spacing.js";

如果您使用的是 RequireJS 或类似的,它是可选的 - 但鉴于它与跨模块加载器的扩展一起使用,使用 .js 可能是一个安全的选择。

【讨论】:

谢谢。导入不带.js 的js 文件一直没问题。问题在于 eslint 抱怨我应该以 .ts 结尾的 ts 文件导入。但我认为除非他们能以某种方式一起工作,否则我将不得不放弃 eslint 转而使用 tslint。仍然发现.. 如果规则对您有问题,您可以取消它。 ECMAScript 模块规范没有说文件扩展名是必要的。模块解析过程是implementation-defined abstract operation,规范没有说明那里的文件扩展名。 @artem - 非常正确。这是浏览器的实现,而不是规范。感谢您的评论。

以上是关于在 CRA 2.1 Typescript 中导入时 ESLint 需要“.ts”的主要内容,如果未能解决你的问题,请参考以下文章

在 Typescript 文件中导入时找不到 Vue 模块

在 phpMyAdmin 中导入时“未选择数据库”

NativeGeocoderReverseResult 在 ionic4 + 电容器中导入时出错 [重复]

在 PowerBI 中导入时,BigQuery 视图整数列读取为 Json

Js文件在Angular项目中导入时不起作用

Storybook 和 AntDesign 组件 - 如何使用 CRA 和 Typescript 进行设置?