我运行yarn build
得到错误:
> Build optimization failed: found page without a React Component as default export in
pages/
See https://nextjs.org/docs/messages/page-without-valid-component for more info.
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
我的目录结构是:
公共
src
- 组件
- 页码
- 管理员
- index.tsx
- _app.tsx
- index.tsx
- 管理员
- 切片
- utils
.env
.gitignore
next-env.d.ts
软件包.json
tsconfig.json
码锁定
我希望我的方式是正确的。
我的代码出了什么问题?
更新
从Mark G的建议和链接中,我认识到返回值应该是一个有效的React组件。
我认为返回值应该是有效的JSX。
我认为我的返回值是有效的。
怎么了???
frontend/src/pages/index.tsx
import LoginPage from "pages/admin";
export function Home() {
return <LoginPage />;
}
frontend/src/pages/admin/index.tsx
export default function LoginPage() {
...
function Redirect(to: any) {
const router = useRouter();
useEffect(() => {
router.push(to);
}, []);
return null;
}
if (logged_in.payload.loggedInReducer.logged_in) {
return <div></div>;
} else {
return (
<ThemeProvider theme={theme}>
...
</ThemeProvider>
);
}
}
在frontend/src/pages/index.tsx
文件中,更改。。。
// missing `default`
export function Home() {
return <LoginPage />;
}
到…
// add `default`
export default function Home() {
return <LoginPage />;
}
每当出现错误时,首先检查文件和目录。
在这里,你可以看到这是一个发生在页面/中的错误
因为你在页面中有一个文件名index.tsx,所以它的目录意味着pages/index.tsx(#注意:每当你导入一个目录时,它首先会检查这个目录中是否有文件名index.extension。(
在你的index.tsx中,你会有很多函数。因此,它会找到一个默认导出的函数。
也许您忘记在index.tsx.的函数中添加关键字默认
在frontend/src/pages/index.tsx文件中,只需添加一个关键字default。。。希望它能起作用,你能理解。
export default function Home() {
return <LoginPage />;
}