Reactjs «Ошибка: ENOENT: нет такого файла или каталога, откройте ..» после преобразования файла jsx в tsx

У меня есть приложение create-react-app, и я перевожу файлы с jsx на typescript. Например, один файл называется /code/app_react/src/common/Action.jsx, и я переименовал его в /code/app_react/src/common/Action.tsx. Я внес необходимые изменения, чтобы успешно преобразовать его в tsx, но получаю сообщение об ошибке, связанное с изменением имени:

./src/common/Action.jsx Error: ENOENT: no such file or directory, open '/code/src/common/Action.jsx'

  • переустановка не помогает
  • почему-то ожидается старая версия файла

Файл, импортирующий этот файл, является файлом jsx, но теперь я импортирую в него файл tsx.

Это приложение CRA, так есть ли правильный способ устранить эту ошибку?

РЕШЕНИЕ: Мне пришлось удалить их из репозитория git, используя команду git rm, вот так:

git rm /code/src/common/Action.jsx

Как только я это сделал, он удалил jsx из зафиксированных файлов, а затем я смог использовать новые tsx файлы.

ты файл импортировал? import Action from '/code/app_react/src/common/Action.tsx'

Akshay Mulgavkar 06.03.2019 05:33

Да, это отлично работает, когда расширение jsx

thehme 06.03.2019 14:03

У меня тоже есть эта проблема. Я импортирую файл без расширения, и после изменения расширения я всегда получаю ENOENT и должен перезапустить сервер разработки. Очень расстраивает, так как этот скрипт очень медленно запускается. Я попытаюсь импортировать с явным расширением после переименования и посмотрю, решит ли это проблему.

Glenn Jorde 22.03.2019 10:38

@thehme Вы нашли решение этой проблемы?

Gmv 10.07.2019 09:05

да, мне пришлось бежать git rm /code/src/common/Action.jsx

thehme 12.07.2019 05:53

Привет, пожалуйста, не помещайте решение в вопрос. Вместо этого дайте ответ. @thehme

TOPKAT 21.01.2022 16:05
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
34
6
55 101
10

Ответы 10

Возможно, вы не импортировали файл. Вам нужно импортировать файл, чтобы использовать его.

import Action from '/code/app_react/src/common/Action.tsx';

Также добавьте это в свой webpack.config.js.

resolve: {
    extensions: [".ts", ".tsx", ".js", ".jsx"]
},

Вы готовы идти!

В приложении, созданном с помощью webpack.config.js, нет create-react-app. Если вы не извлечете или не используете react-rewire или какой-либо подобный инструмент.

Glenn Jorde 22.03.2019 10:40

У меня была эта проблема (хотя я переименовал js в jsx, а не jsx в tsx), и решение, добавленное к вопросу (запуск git rm в исходном файле), у меня не сработало.

Что сработало, было предложено эта ветка r/reactjs Reddit: удаление и переустановка node_modules:

rm -rf node_modules && npm i

У меня была такая же проблема, не нужно удалять node_modules или удалять целевой файл, вам просто нужно убить процесс узла.

Если вы на windows:

  • ctrl+alt+delete для запуска диспетчера задач
  • найти node
  • завершить процесс

Если вы на linux:

  • наверное что-то вроде pkill node и т.д.

После того, как я убил процесс node и снова запустил npm start, он находит целевой файл.

Убил мой запущенный процесс пряжи, убил vscode, перезапустил оба, и он работает

как убить процесс пряжи? Есть ли какая-нибудь команда для этого? Находка для убунту

maverick 21.09.2021 07:35

Простой перезапуск сервера работает...

Lemayzeur 23.09.2021 17:09

Спасибо! Это сработало для меня. После перезагрузки кода VS он отобразил файл tsconfig.json, и проблемы были решены.

Sanushi Salgado 05.10.2021 08:33

Я работал с редуксом, а потом наткнулся на эту ошибку!

Я попытался убить узел, удалить модули узла, перезагрузить ноутбук, но он все равно выдавал ту же ошибку, а позже я начал отлаживать index.js.

Я прокомментировал каждую строку и начал раскомментировать сверху, чтобы увидеть, где код ломается, а затем заметил

I had not installed

redux

I had only installed react-redux

Просто перезапустите сервер npm, он автоматически обнаружит файл машинописного текста и внесет коррективы.

У меня была такая же проблема с преобразованием .jsx в .tsx. Если вы используете Parcel для создания своего приложения, удалите папку .cache. Вот где Parcel кэширует файлы сборки. Это исправило это для меня.

Это происходит из-за предустановленного кеша. Простым решением было бы перезапустить ваше приложение nodejs и реагировать.

В Linux

$ pkill node   

$ killall node  

$ kill -9 <pid>

В Windows

C:\>taskkill /im node.exe

C:\>taskkill /f /im node.exe

C:\>taskkill /pid <PID of node>

В MacOS

$sudo killall -9 node

А затем снова запустите приложение React.

npm start

Нам действительно нужно перезапускать react-scripts каждый раз, когда мы удаляем или перемещаем файл? Я устал ждать 1 минуту, пока react-scripts загрузится и скомпилирует мой проект :/

Matej Kormuth 15.01.2021 13:43

Не обязательно каждый раз, но если у вас проблемы с кешем, иногда может помочь перезапуск и аннулирование кеша.

Umanda 17.01.2021 05:21

перезапуск сервера решил мою проблему, так просто

rickvian 11.09.2021 18:27

Я вручную удалил папку node_modules и переустановил их, запустив npm i, и трюк у меня сработал.

Простой перезапуск сервера работает.

Например: NPM RUN DEV или любой стартовый скрипт у меня работал.

Другие вопросы по теме