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

如何修复Next 13中Module parse failed: Unexpected character '�'(1:0)错误?

解决Next.js 13.4中lqip-modern包导致的Webpack解析错误

问题重现

安装lqip-modern包后,应用抛出Webpack解析错误:

ModuleParseError: Module parse failed: Unexpected character '�' (1:0)
You may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders
(Source code omitted for this binary file)

修复方案

方案1:优先使用Next.js内置图片优化(推荐)

Next.js 13+的App Router自带next/image组件,原生支持模糊占位符,无需额外依赖第三方包。示例代码:

import Image from 'next/image';

export default function ImageWithPlaceholder() {
  return (
    <Image
      src="/your-image.jpg"
      alt="示例图片"
      width={800}
      height={600}
      placeholder="blur"
      // 可通过sharp自动生成base64占位符,无需手动编写
      blurDataURL="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8/5+hHgAHggJ/PchI7wAAAABJRU5ErkJggg=="
    />
  );
}

Next.js默认集成了sharp工具,可自动为本地图片生成模糊占位符数据,无需手动处理。

方案2:自定义Webpack配置兼容二进制文件

若必须使用lqip-modern,可在next.config.js中添加Webpack规则处理二进制资源:

/** @type {import('next').NextConfig} */
const nextConfig = {
  webpack: (config) => {
    // 添加规则处理图片类二进制文件
    config.module.rules.push({
      test: /\.(png|jpe?g|gif|webp)$/i,
      type: 'asset/resource',
    });
    // 若lqip-modern依赖其他二进制格式,可按需扩展test规则
    return config;
  },
};

module.exports = nextConfig;

注意:该方案可能与Next.js内置图片处理逻辑冲突,需测试验证兼容性。

方案3:替换为纯JS实现的lqip包

lqip-modern依赖二进制模块,可改用纯JS实现的lqip包避免解析问题:

# 卸载原包
npm uninstall lqip-modern
# 安装纯JS版本
npm install lqip

使用示例:

import lqip from 'lqip';

async function generateBlurPlaceholder(imagePath) {
  const result = await lqip(imagePath);
  return result.metadata.dataURIBase64;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 20:58:13