You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

React项目中export 'App'未找到警告及页面故障问题求助

React项目中export 'App'未找到警告及页面故障问题求助

嘿,别着急,这个终端警告其实已经把问题的核心说得明明白白啦,咱们一步步拆解解决:

问题根源

你看到的警告:

WARNING in ./src/renderers/dom.js 5:51-54
export 'App' (imported as 'App') was not found in 'components/App' (possible exports: default)

意思是:你在dom.js里用了命名导入的方式(也就是带大括号的import { App } from 'components/App'),但你的App.js里只导出了一个默认导出的组件StarMatch,两者不匹配,所以才会报找不到App的错误。

两种解决方法

你可以任选一种来修复:

方法1:修改dom.js的导入方式(推荐,不用改组件代码)

dom.js里的命名导入改成默认导入,去掉大括号就行:

// 原来的错误导入
import { App } from 'components/App';

// 修改后的正确导入
import App from 'components/App';

因为你的App.js用的是export default StarMatch(默认导出),默认导入不需要大括号,而且你可以给它起任意名字,这里叫App就刚好对应你原来的用法。

方法2:修改App.js的导出与组件名

如果你想保持dom.js里的命名导入方式,那可以把App.js里的组件名改成App,并确保导出方式匹配:

import React, { useState } from 'react';
import Game from './Game';

// 把组件名从StarMatch改成App
const App = () => {
  const [gameId, setGameId] = useState(1);
  return <Game key={gameId} startNewGame={() => setGameId(gameId + 1)}/>;
}

// 保持默认导出(对应方法1的导入)
export default App;

// 或者改成命名导出(对应dom.js里的import { App } ...)
// export const App = () => {...}

为什么你之前改名字会导致页面崩溃?

你说把StarMatch改成App后页面全挂了,大概率是修改的时候没同步改全:比如只改了export default App,但组件定义还是const StarMatch = () => {...},这样变量名和导出名不匹配,组件没有被正确导出,自然页面就无法渲染了。只要把组件名和导出名同步对应上就不会有问题。

小提示:调试这类问题的思路

以后遇到这类导入导出的警告,先看终端提示的信息——它已经明确告诉你possible exports: default,也就是目标文件只有默认导出,这时候就去检查你的导入方式是不是和导出方式匹配,不用盲目猜组件内部的问题哦~

备注:内容来源于stack exchange,提问作者John Beasley

火山引擎 最新活动