Reputation: 10360
I have a project with .ts
and .tsx
files and I am trying to import a .tsx
file from a .ts
file, like so:
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 { /*...*/ }
Now TypeScript tells me
ERROR in ./src/index.ts Module not found: Error: Can't resolve './write_editor' in '/Users/luke/Projekte/writejs/code/writejs/src' @ ./src/index.ts 3:23-48 @ multi ./src/index.ts
So I tried this:
src/index.ts
import WriteEditor from './write_editor.tsx';
Now my IDE tells me not to write the extensions tsx
and I get an errors in src/write_editor.tsx because TypeScript cannot find my .ts
files from a .tsx
file.
Then I went to rename the imports and added the .ts
extensions
import Events from './events.ts';
import Actions from './actions.ts';
Now I am getting tons or errors telling me not to write extensions at all.
So how can we import tsx
from ts
and vice versa?
Upvotes: 7
Views: 27635
Reputation: 8096
In my case I had renamed a .jsx
file to .tsx
and had to delete Parcel's cache to get it to resolve.
Upvotes: 0
Reputation: 49874
In my case, I got same error when using typescript-eslint. It is an app created by create-react-app.
The way is by adding this code in .eslintrc.js.
module.exports = {
// ...
settings: {
'import/resolver': {
'node': {
'extensions': ['.js','.jsx','.ts','.tsx']
}
}
}
};
Upvotes: 7
Reputation: 161517
When you write
import WriteEditor from './write_editor';
Webpack will automatically look for
./write_editor
./write_editor.js
./write_editor.json
Since you're using .ts
and .tsx
, you need to tell it to look for those too in your Webpack config using resolve.extensions
:
{
resolve: {
extensions: [".js", ".json", ".ts", ".tsx"],
},
}
Upvotes: 23