【问题标题】:Unable to import 'sharp' into next.js project. "Module not found: Can't resolve 'child_process'"无法将 \'sharp\' 导入 next.js 项目。 \"找不到模块:无法解析 \'child_process\'\"
【发布时间】:2022-11-09 19:34:08
【问题描述】:

我正在尝试在我的 Next.js 项目中导入和使用sharp。我曾多次尝试卸载并重新安装sharp,但每次运行npm run dev,这就是我得到的错误。

./node_modules/detect-libc/lib/detect-libc.js:3:0
Module not found: Can't resolve 'child_process'

Import trace for requested module:
./node_modules/sharp/lib/utility.js
./node_modules/sharp/lib/index.js
./pages/index.js

https://nextjs.org/docs/messages/module-not-found

作为参考,这是导致错误的代码:

import sharp from "sharp";

我也试过这段代码,但没有成功:

const sharp = require('sharp');

除了sharp,我安装的所有其他依赖项都有效。

【问题讨论】:

  • 您使用的是什么版本的节点和锐器?
  • 你在客户端文件中导入了sharp吗?就像在pages/*.js 文件中一样?
  • 节点 v14.19.2,夏普“0.30.4”。我对使用 JS 相当陌生,但我认为这是因为我试图在我在客户端构建的函数中使用Sharp,它只能在服务器端使用。如果是这种情况,我应该在哪里定义我需要使用的功能?
  • @bogdanoff 是的,我认为这就是问题所在。我定义了一个函数来处理我从 api 调用中提取的图像。如果我无法在客户端执行此操作,我应该在哪里执行此操作?抱歉.. JS/网络开发新手
  • @cyrus,所以您想处理位于其他地方的图像,对吗?然后为此在您的后端编写一个 api。逻辑应该是获取该图像(使用 axios 或 node-fetch),它将返回一个缓冲区。将此缓冲区传递给sharp 并对其进行处理,它还将返回缓冲区,现在使用此缓冲区来响应您的客户端。注意:无论如何,您都不能在客户端使用sharp 包。

标签: javascript node.js next.js npm-install sharp


【解决方案1】:

如果您使用 M1 Macbook,则特别有问题。

阅读下面的评论或周围的其他评论: https://github.com/lovell/sharp/issues/2794#issuecomment-880363027

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-25
    • 2021-06-17
    • 2021-02-06
    • 2022-06-13
    • 2021-10-16
    • 2021-05-17
    • 2020-08-15
    • 2021-06-23
    相关资源
    最近更新 更多