解决nextjs部署到now上之后出现的“Unable to import module 'now__launcher'”错误
解决nextjs部署到now上之后出现的“Unable to import module 'now__launcher'”错误
这个错误是由于在next.config.js中直接引用了withLess之类的插件导致的。在now环境下require插件需要在PHASE_PRODUCTION_SERVER阶段下,如果不加这个阶段的判断就会报错。
这个是错误的做法
// ❌ Don't put this here
const withCSS = require('@zeit/next-css'); // 由于不在PHASE_PRODUCTION_SERVER阶段所以报错 const { PHASE_PRODUCTION_SERVER } = process.env.NODE_ENV === 'development' ? {} : !process.env.NOW_REGION ? require('next/constants') : require('next-server/constants'); module.exports = (phase, { defaultConfig }) => { if (phase === PHASE_PRODUCTION_SERVER) { // Config used to run in production. return {}; } return withCSS(); };
正确的写法:
const { PHASE_PRODUCTION_SERVER } = process.env.NODE_ENV === 'development' ? {} : !process.env.NOW_REGION ? require('next/constants') : require('next-server/constants'); module.exports = (phase, { defaultConfig }) => { if (phase === PHASE_PRODUCTION_SERVER) { // Config used to run in production. return {}; } // ✅ Put the require call here. const withCSS = require('@zeit/next-css'); return withCSS(); };
参考:https://github.com/zeit/next.js/issues/5750
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步