错误:找不到模块“./build/Release/sharp”

18

我正在尝试使用Sharp运行一些NodeJS代码,但是我遇到了以下错误:

    [root@localhost myapp-backend]# node server.js 

module.js:340
    throw err;
    ^
Error: Cannot find module './build/Release/sharp'
    at Function.Module._resolveFilename (module.js:338:15)
    at Function.Module._load (module.js:280:25)
    at Module.require (module.js:364:17)
    at require (module.js:380:17)
    at Object.<anonymous> (/root/myapp-backend/node_modules/sharp/index.js:11:13)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Module.require (module.js:364:17)
    at require (module.js:380:17)
    at Object.<anonymous> (/root/myapp-backend/server.js:277:13)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Function.Module.runMain (module.js:497:10)
    at startup (node.js:119:16)
    at node.js:935:3

有什么想法吗?

谢谢你。


你尝试检查了你的路径吗? - Andrew Evt
是的,我在发布之前进行了谷歌搜索,并验证了我的PATH是否设置正确,如果这就是你的意思? - Daimen Worrall
运行 npm install 时是否报告了任何错误? - Lovell Fuller
我最近修改了PATH变量,然后立即在许多不同的项目中开始遇到这个问题。我可能需要添加/bin等路径。 - Tomachi
6个回答

18

结果发现我使用的Debian 8.x版本中并没有包括vips,但是我没有收到错误消息。运行

apt-get install libvips

接着

npm install sharp

问题已经被解决了,Sharp 终于安装并正常工作了。


11

可能是因为Sharp没有安装导致的。当我通过npm安装它时,没有出现任何错误,但是当我进入node_modules/sharp时,没有构建文件。

您可以尝试通过以下命令构建:
node-gyp rebuild

但在此之前,请确保您已经安装了Vips-这是Sharp使用的库。在Mac上,您需要执行以下命令:
brew install homebrew/science/vips --with-webp --with-graphicsmagick

构建Sharp库后,您就可以使用它了。


3
在Windows和Linux上,sharp已经带有预编译的vips二进制文件。只需要运行npm install sharp,一切都应该正常工作。在Mac OS X上,你需要先使用brew安装vips,就像你所说的那样。 - jcupitt
libvips should be installed manually using apt-get on Debian and then npm install sharp - imike

2

检查一下你的node_modules/sharp目录下是否没有build文件夹,如果没有,请运行以下命令:

npm i sharp

它会重新安装并构建Sharp。(对我有效)


1
在我的情况下,安装适用于特定目标版本的node.js的sharp是可行的。我使用了以下命令,但在此之前请删除您现有的node_modules文件夹或删除rm -rf node_modules/sharp
npm install --arch=x64 --platform=linux --target=16x sharp

1

我在Lambda函数中使用s3图像裁剪时遇到了相同的错误。

我按照以下方式安装了sharp模块,现在我能够使用Node.js 14.x版本裁剪图像。

npm install --platform=linux --arch=x64 sharp

请检查"node_modules/sharp/build/Release/"文件夹中的"sharp-linux-x64.node"。

0
我的解决方法是更新到最新的Node 13,而不是apt-get默认提供的Node 8。仅供参考。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接