Next.js问题:已配置exportPathMap却提示未找到的排查求助
问题根源:多次覆盖
module.exports 导致配置丢失 你遇到的核心问题是连续三次给 module.exports 赋值,后面的语句直接覆盖了前面的配置。具体来说:
- 你第一次定义了带
exportPathMap的配置对象 - 第二次用
withCss({...})完全替换了module.exports - 第三次又用
withSass(withTM({...}))再次替换了module.exports
最终只有最后一次的配置生效,前面的 exportPathMap 被彻底覆盖,所以 Next.js 找不到这个配置项,才会抛出那个错误。
解决方案:合并所有配置到链式调用中
Next.js 的插件(withCss、withSass、withTM)都是接受配置对象并返回增强版配置的函数,你需要把它们链式包裹,同时把所有配置项(包括 exportPathMap)统一放到最内层的配置对象里。修改后的 next.config.js 应该是这样:
const withCss = require("@zeit/next-css"); const withSass = require("@zeit/next-sass"); const withTM = require("next-transpile-modules"); module.exports = withSass( withTM( withCss({ // withCss 的配置 cssModules: true, // withTM 的配置 transpileModules: ["react-bulma-components"], // withSass 的配置 sassLoaderOptions: { includePaths: ["./components"] }, // 你的 exportPathMap 配置 exportPathMap: async function( defaultPathMap, { dev, dir, outDir, distDir, buildId } ) { return { "/": { page: "/" }, "/menu": { page: "/menu" }, "/about": { page: "/about" } }; } }) ) );
为什么这样可行?
每个插件函数都会接收配置对象并返回包含插件逻辑的新配置,链式调用可以让所有插件的逻辑叠加生效,同时所有自定义配置(包括 exportPathMap)都能被完整保留,不会被覆盖。
内容的提问来源于stack exchange,提问作者user7976244
相关产品推荐
相关产品推荐

