能否在NextJS项目中仅使用命名导出?_app.ts使用遇报错
NextJS 仅使用命名导出处理 _app.ts 的解决方案
首先明确:NextJS 的路由系统(包括 _app.ts、_document.ts 这类特殊页面,以及普通页面路由)必须依赖默认导出的 React 组件,这是框架的核心约定——即便文档未在显眼位置强调,也是路由解析逻辑的硬性要求。
如果你坚持要保留命名导出的写法,可采用折中方案:在文件末尾将命名导出的组件同时作为默认导出,既满足框架要求,又能保留命名导出的使用方式:
import type { AppProps } from 'next/app' // 保留命名导出 export const App = ({ Component, pageProps }: AppProps) => { return <Component {...pageProps} /> } // 额外添加默认导出,适配NextJS路由规则 export default App
这样处理后,你在项目其他模块中依然可以通过 import { App } from './_app' 进行命名导入,同时 NextJS 路由系统会识别到默认导出的组件,不再抛出错误。
目前 NextJS 并未提供仅使用命名导出作为页面/特殊组件的配置选项,路由解析逻辑优先查找默认导出是框架设计上的固定规则,暂无修改途径。
内容的提问来源于stack exchange,提问作者Lars Flieger
相关产品推荐
相关产品推荐

