You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Next.js集成NextUI Select组件构建时Edge Runtime报错求助

解决Next.js 14.1.3 + NextUI Select组件构建时Edge Runtime错误

问题原因

NextUI Select组件依赖的部分lodash模块在Edge Runtime环境下会触发动态代码评估(如new Function),而Next.js的Edge Runtime默认禁止这类操作,导致构建失败。开发模式正常是因为开发环境未严格启用Edge Runtime的限制。

具体解决办法

1. 移除Root Layout的Edge Runtime配置(优先推荐)

如果项目不需要Edge Runtime,直接删除Root Layout中的runtime: 'edge'配置,使用默认的Node.js Runtime:

// app/layout.jsx
export default function RootLayout({ children }) {
  return (
    <html lang="zh-CN">
      <body>{children}</body>
    </html>
  );
}
// 移除这一行:export const runtime = 'edge';

2. 将Select组件标记为客户端组件

若必须保留Edge Runtime,需将使用Select的组件标记为客户端组件(运行在浏览器环境,不受Edge Runtime限制),在组件顶部添加'use client'指令:

'use client';

import { Select, SelectItem } from '@nextui-org/select';

export default function CustomSelect() {
  return (
    <Select placeholder="选择选项">
      <SelectItem key="option1" value="option1">选项1</SelectItem>
      <SelectItem key="option2" value="option2">选项2</SelectItem>
    </Select>
  );
}

3. 转译NextUI及lodash相关包

在next.config.js中添加transpilePackages配置,强制转译NextUI和lodash相关依赖,避免未转译的代码触发动态评估:

/** @type {import('next').NextConfig} */
const nextConfig = {
  transpilePackages: ['nextui', '@nextui-org/select', 'lodash-es'],
};

module.exports = nextConfig;

4. 升级NextUI到最新稳定版

检查NextUI版本,升级到官方修复过Edge Runtime兼容问题的版本(如@nextui-org/react@2.3.6及以上),执行升级命令:

npm install @nextui-org/react@latest

内容的提问来源于stack exchange,提问作者Lvasche

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 13:57:43