我有一个包含.ts
和.tsx
个文件的项目,我正在尝试从.tsx
文件导入.ts
文件,如下所示:
的src / index.ts
import WriteEditor from './write_editor';
的src / write_editor.tsx
import Events from './events';
import Actions from './actions';
export default class WriteEditor extends React.Component { /*...*/ }
现在TypeScript告诉我
> ./src/index.ts中的错误 找不到模块:错误:无法解决' ./ write_editor' in' / Users / luke / Projekte / writejs / code / writejs / src' @ ./src/index.ts 3:23-48 @ multi ./src/index.ts
所以我尝试了这个:
的src / index.ts
import WriteEditor from './write_editor.tsx';
现在我的IDE告诉我不要编写扩展名tsx
而我在 src / write_editor.tsx 中收到错误,因为TypeScript无法从{{}找到.ts
个文件{1}}档案。
然后我去重命名导入并添加了.tsx
扩展名
.ts
现在我收到很多或错误告诉我根本不写扩展名。
那么我们如何从import Events from './events.ts';
import Actions from './actions.ts';
导入tsx
,反之亦然?
答案 0 :(得分:9)
写作时
import WriteEditor from './write_editor';
Webpack会自动查找
./write_editor
./write_editor.js
./write_editor.json
由于您正在使用.ts
和.tsx
,因此您需要告诉它使用resolve.extensions
在您的Webpack配置中查找这些内容:
{
resolve: {
extensions: [".js", ".json", ".ts", ".tsx"],
},
}
答案 1 :(得分:1)
就我而言,使用 typescript-eslint 时遇到了相同的错误。它是由 create-react-app 创建的应用。
方法是在 .eslintrc.js 中添加此代码。
module.exports = {
// ...
settings: {
'import/resolver': {
'node': {
'extensions': ['.js','.jsx','.ts','.tsx']
}
}
}
};
答案 2 :(得分:0)
就我而言,我已将一个 .jsx
文件重命名为 .tsx
,并且不得不删除 Parcel 的缓存以使其解决。