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

使用Next.js Image组件遇TypeError:需使用new关键字

解决Next.js + Prismic环境下的"TypeError: Image constructor: 'new' is required"错误

这个错误大概率是Next.js的Image组件和Prismic库导出的Image对象命名冲突,或是Prismic的某些全局修改覆盖了浏览器原生的Image构造函数导致的。下面是具体解决方法:

1. 排查导入重名问题

检查代码(包括关联组件)是否同时导入了Next.js的Image和Prismic的Image,这类同名导入会直接引发冲突:

// 错误示例:两个同名Image导入导致冲突
import Image from 'next/image';
import { Image } from '@prismicio/react';

解决办法是给其中一个导入重命名:

// 将Next.js的Image重命名为NextImage
import NextImage from 'next/image';

const Test = () => {
  return (
    <>
      {/* 使用重命名后的组件,注意src路径无需加../public/ */}
      <NextImage src="/vercel.svg" layout="fill" objectFit="contain" />
    </>
  );
};

export default Test;

注意:Next.js Image组件引用public目录下的资源时,直接写根路径(如/vercel.svg)即可,无需添加../public/前缀。

2. 修复原生img标签报错问题

如果原生img标签也触发错误,说明全局的Image构造函数已被篡改。可以直接使用标准img标签写法,同时检查是否引入了prismic-dom这类旧库——它容易污染全局对象,建议改用@prismicio/react的最新API:

const Test = () => {
  return (
    <>
      <img src="/vercel.svg" alt="Vercel Logo" />
    </>
  );
};

3. 检查Prismic客户端配置

确保Prismic客户端初始化没有修改全局对象,优先使用官方推荐的初始化方式:

import * as prismic from '@prismicio/client';

const client = prismic.createClient('你的仓库名称', {
  accessToken: process.env.PRISMIC_ACCESS_TOKEN,
});

export default client;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 05:18:20