目录
An import path cannot end with a ‘.ts’ extension in TS
如果您在使用React.js时遇到错误,请单击第二个副标题。
导入路径不能以 TS 中的 ‘.ts’ 扩展名结尾
当我们在导入 TypeScript 文件时包含扩展名时,会出现“导入路径不能以‘.ts’扩展名结尾”的错误。
要解决该错误,请从您的 TypeScript 导入中删除扩展名。
下面是错误如何发生的示例。
// ⛔️ Error: An import path cannot end with a '.ts' // extension. Consider importing './another-file' instead.ts(2691) import { sum } from './another-file.ts';
要解决该错误,请.ts
在导入文件时删除扩展名。
import { sum } from './another-file';
TypeScript 编译器在将您的 TypeScript 代码转换为 JavaScript 时不会更改导入说明符,因此如果您有类似 的导入
import {sum} from './another-file.ts'
,即使在编译后路径也会保留.ts
扩展名。
指定如果使用 Webpack 需要解析的扩展
如果您使用 Webpack,另一种方法是尝试将您需要解析的扩展添加到您的webpack.config.js
文件中。
module.exports = { //... rest resolve: { extensions: ['.js', '.jsx', '.ts', '.tsx'], }, };
如果你使用 Deno,指定你需要解析的扩展
如果你使用 Deno,你必须在导入文件时指定扩展名,所以你有 2 个选项:
- 为 Deno 安装 VSCode 扩展
// @ts-ignore
在导入上方使用注释
使用ts-ignore
注释
如果这仍然不适合你,你必须使用// @ts-ignore
导入上方的注释来忽略错误。
// @ts-ignore import { sum } from './another-file.ts';
如果您的 linter 规则不允许您在代码中使用 TS 注释,您可以为该文件禁用它。
/* eslint-disable @typescript-eslint/ban-ts-comment */ // @ts-ignore import { sum } from './another-file.ts';
或者您可以在您的文件中禁用它eslintrc
。
{ "rules": { "@typescript-eslint/ban-ts-comment": "off" }, }
关于抑制错误的能力有一个Github 问题
,但在过去 4 年里没有太大的动静。
导入路径在 TS 中不能以 ‘.tsx’ 扩展名结尾
当我们在 React.js 应用程序中导入 TypeScript 文件时包含扩展名时,会出现错误“导入路径不能以‘.tsx’扩展名结尾”。
要解决该错误,请从您的 TypeScript 导入中删除扩展名。
下面是错误如何发生的示例。
// ⛔️ An import path cannot end with a '.tsx' extension. // Consider importing './App.js' instead.ts(2691) import App from './App.tsx';
要解决该错误,请.tsx
在导入文件时删除扩展名。
import App from './App';
TypeScript 编译器在将您的 TypeScript 代码转换为 JavaScript 时不会更改导入说明符,因此如果您有类似 的导入
,即使在编译后import App from './App.tsx'
路径也会保留扩展名。.tsx
如果出于某种原因需要保留扩展名并且使用 Webpack,请尝试将需要解析的扩展名添加到文件中webpack.config.js
。
module.exports = { //... rest resolve: { extensions: ['.js', '.jsx', '.ts', '.tsx'], }, };
If this still doesn’t work for you and you need to keep the extensions, use
// @ts-ignore
comments above the imports to ignore the error.
// @ts-ignore import App from './App.tsx';
If you have a linter rule that doesn’t allow you to use TS comments in your
code, you can disable it for the file.
/* eslint-disable @typescript-eslint/ban-ts-comment */ // @ts-ignore import App from './App.tsx';
Or you could disable the rule in your eslintrc
file.
{ "rules": { "@typescript-eslint/ban-ts-comment": "off" }, }
If you decide to ignore the error, make sure you have a build step in place that
removes the extensions. If your compiled JavaScript files have imports with
.tsx
extensions, your app won’t work.
I’ve also written a detailed guide on
how to use create-react-app with TypeScript.
# Additional Resources
You can learn more about the related topics by checking out the following
tutorials: