如何在本地退出Next.js 13实验性App目录?修改配置后报错
问题:如何退出Next.js 13的实验性App目录功能?
我在开发真实项目时测试Next.js 13的新App目录,遇到图片、字体无法正常加载的问题,想停止使用这个实验性目录,不需要重新安装next-app,能不能在本地退出该功能?
我的next.config.js配置如下:
/** @type {import('next').NextConfig} */ const path = require("path"); const nextConfig = { experimental: { appDir: true, }, sassOptions: { includePaths: [path.join(__dirname, "styles")], }, reactStrictMode: true, images: { loader: "akamai", path: "/", }, }; module.exports = nextConfig;
将appDir设为false时,我遇到如下错误:
Error: > The `app` directory is experimental. To enable, add `appDir: true` to your `next.config.js` configuration under `experimental`. See https://nextjs.org/docs/messages/experimental-app-dir-config at Object.findPagesDir (C:\Users\Favour\OneDrive\Documents\Code School\WebDevelopment\Projects\ecommerce\frontend\node_modules\next\dist\lib\find-pages-dir.js:80:19) at DevServer.getRoutes (C:\Users\Favour\OneDrive\Documents\Code School\WebDevelopment\Projects\ecommerce\frontend\node_modules\next\dist\server\dev\next-dev-server.js:141:59) at new Server (C:\Users\Favour\OneDrive\Documents\Code School\WebDevelopment\Projects\ecommerce\frontend\node_modules\next\dist\server\base-server.js:115:47) at new NextNodeServer (C:\Users\Favour\OneDrive\Documents\Code School\WebDevelopment\Projects\ecommerce\frontend\node_modules\next\dist\server\next-server.js:73:9) at new DevServer (C:\Users\Favour\OneDrive\Documents\Code School\WebDevelopment\Projects\ecommerce\frontend\node_modules\next\dist\server\dev\next-dev-server.js:100:9) at NextServer.createServer (C:\Users\Favour\OneDrive\Documents\Code School\WebDevelopment\Projects\ecommerce\frontend\node_modules\next\dist\server\next.js:152:24) at C:\Users\Favour\OneDrive\Documents\Code School\WebDevelopment\Projects\ecommerce\frontend\node_modules\next\dist\server\next.js:165:42 at async NextServer.prepare (C:\Users\Favour\OneDrive\Documents\Code School\WebDevelopment\Projects\ecommerce\frontend\node_modules\next\dist\server\next.js:134:24) at async Server.<anonymous> (C:\Users\Favour\OneDrive\Documents\Code School\WebDevelopment\Projects\ecommerce\frontend\node_modules\next\dist\server\lib\render-server.js:92:17) { type: 'Error' }
解决方案
可以无需重新安装next-app退出该功能,按以下步骤操作:
- 修改
next.config.js,将experimental.appDir设为false,或者直接移除整个experimental.appDir配置项:/** @type {import('next').NextConfig} */ const path = require("path"); const nextConfig = { // 移除或注释掉这部分,或者设为false // experimental: { // appDir: false, // }, sassOptions: { includePaths: [path.join(__dirname, "styles")], }, reactStrictMode: true, images: { loader: "akamai", path: "/", }, }; module.exports = nextConfig; - 核心操作:删除项目根目录下的
app文件夹。Next.js会自动检测该文件夹的存在,强制要求开启App目录模式,所以必须删除它才能彻底退出实验性功能。 - 确保项目中保留
pages文件夹(若之前存在),如果已经删除,需要重新创建pages文件夹并添加必要页面(比如pages/index.js作为首页)。 - 重启Next.js开发服务器,确保配置和文件变更生效。
内容的提问来源于stack exchange,提问作者Syre Musk
相关产品推荐
相关产品推荐

