【发布时间】:2021-12-25 14:43:30
【问题描述】:
我正在 Next.js 应用程序上构建,当我安装/导入 Plaiceholder(用于生成占位符图像)时,我收到以下错误:Module not found: Can't resolve 'child_process'
- 节点 v14.18.0
- Next.js v11.1.2
- 占位符 v2.2.0
- 夏普 v0.29.2
我理解此错误消息意味着 webpack5 正在尝试捆绑客户端无法使用的节点包。但我不清楚它为什么这样做。我没有自定义任何 webpack 配置,并且在 Plaiceholder 文档中找不到任何提及此问题的内容。我该如何解决?
注意:我希望在构建期间创建 base64 数据 URL,以便在页面加载后立即可用(不在运行时异步获取)。
这是我的 next.config.js
module.exports = {
reactStrictMode: true,
};
我的 package.json 只有 scripts、dependencies 和 devDependencies(无需更改模块分辨率)
如果相关,这里有一个使用 Plaiceholder 的简化示例:
import Image from "next/image";
import { getPlaiceholder } from "plaiceholder";
import React, { useState } from "react";
...
const { base64 } = await getPlaiceholder(imgUrl);
...
return (<Image
src={imgUrl}
placeholder="blur"
blurDataURL={base64}
/>);
【问题讨论】:
-
Plaiceholder使用 Node.js API,不能在客户端代码中使用。您需要将其移至服务器(getStaticProps/getServerSideProps或 API 路由)。
标签: javascript webpack next.js server-side-rendering