在 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”的主要内容,如果未能解决你的问题,请参考以下文章
NativeGeocoderReverseResult 在 ionic4 + 电容器中导入时出错 [重复]