将 jsx 文件转换为 tsx 后,Reactjs“错误:ENOENT:没有这样的文件或目录,打开..”

the*_*hme 27 typescript reactjs webpack create-react-app

我有一个create-react-app应用程序,我的翻译文件是从jsxtypescript。例如,调用一个文件/code/app_react/src/common/Action.jsx,我将其重命名为/code/app_react/src/common/Action.tsx. 我进行了必要的更改以成功将其转换为tsx,但收到与名称更改相关的错误:

./src/common/Action.jsx 错误:ENOENT:没有这样的文件或目录,打开“/code/src/common/Action.jsx”

  • 重建没有帮助
  • 由于某种原因,需要使用旧版本的文件

导入这个文件的文件是一个jsx文件,但是现在我向tsx其中导入一个文件。

这是一个CRA应用程序,那么有没有正确的方法来清除这个错误?

解决方案: 我必须git使用git rm命令将它们从存储库中删除,如下所示:

git rm /code/src/common/Action.jsx
Run Code Online (Sandbox Code Playgroud)

一旦我这样做了,它就会jsx从提交的文件中删除,然后我就可以使用新tsx文件

Rya*_*yan 50

杀死了我正在运行的纱线进程,杀死了 vscode,重新启动了两者并且它有效

  • 它确实有效。你是认真的。 (2认同)
  • 简单的服务器重启就可以了... (2认同)

Aar*_*ron 9

我是有这个问题(虽然我已经改名jsjsx,而不是jsxtsx),并加入到这个问题(运行解决方案git rm的原始文件)并没有为我工作。

这个 r/reactjs Reddit 线程建议做什么工作:删除和重新安装node_modules

rm -rf node_modules && npm i
Run Code Online (Sandbox Code Playgroud)


Ped*_*ram 8

我有同样的问题,不需要删除node_modules或删除目标文件,你只需要杀死节点进程。

如果您在windows

  • ctrl+alt+delete 运行任务管理器
  • node
  • 结束过程

如果您在linux

  • 可能像pkill node,等等。

在我杀死node进程并npm start再次运行后,它找到了目标文件。


Uma*_*nda 5

这是由于预先构建的缓存而发生的。一个简单的解决方案是重新启动您的 nodejs 并响应应用程序。

在 Linux 中

$ pkill node   

$ killall node  

$ kill -9 <pid>
Run Code Online (Sandbox Code Playgroud)

在 Windows 中

C:\>taskkill /im node.exe

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

C:\>taskkill /pid <PID of node>
Run Code Online (Sandbox Code Playgroud)

在 MacOs 中

$sudo killall -9 node
Run Code Online (Sandbox Code Playgroud)

然后再次启动你的 React 应用程序。

npm start
Run Code Online (Sandbox Code Playgroud)

  • 每次删除或移动文件时,我们真的需要重新启动“react-scripts”吗?我厌倦了等待 1 分钟“react-scripts”启动并编译我的项目:/ (2认同)

Aks*_*kar 3

也许您还没有导入该文件。您需要导入该文件才能使用它。

import Action from '/code/app_react/src/common/Action.tsx';
Run Code Online (Sandbox Code Playgroud)

还将其添加到您的 webpack.config.js 中。

resolve: {
    extensions: [".ts", ".tsx", ".js", ".jsx"]
},
Run Code Online (Sandbox Code Playgroud)

你可以走了!

  • 使用“create-react-app”创建的应用程序中没有“webpack.config.js”。除非你弹出或使用react-rewired或类似的工具。 (5认同)