图像水印,nodejs显示错误

我试图把一个水印放在一个图像上,使用图像水印,nodejs。

const express = require('express') const app = express(); var path = require('path'); var watermark = require('image-watermark'); app.use(express.static(path.join(__dirname, 'public'))); var options = { 'text' : 'sample watermark', 'resize' : '200%' }; app.get('/', function (req, res) { var fs = require('fs'); if (fs.existsSync('./public/files/pg363.jpg')) { // Do something watermark.embedWatermark('./public/files/pg363.jpg', options); res.send('Hello world'); }else{ res.json({"filesexist":"no"}); } }); app.listen(3000,function(){ console.log('App running on server 3000'); }) 

这给我错误:

  events.js:163 throw er; // Unhandled 'error' event ^ Error: spawn identify ENOENT at exports._errnoException (util.js:1050:11) at Process.ChildProcess._handle.onexit (internal/child_process.js:193:32) at onErrorNT (internal/child_process.js:367:16) at _combinedTickCallback (internal/process/next_tick.js:80:11) at process._tickCallback (internal/process/next_tick.js:104:9) 

这是与filepath相关的错误。 我的目录结构是pdf-watermark(主目录) – > public-> files-> pg363.jpg

请帮忙。

ENOENT意味着由于某种原因节点无法打开文件,这可能是由于几件事情造成的。

首先,你应该使用path.resolve__dirname指定你的映像文件的完整path:

 const imagePath = path.resolve(__dirname, 'public/files/pg363.jpg'); if (fs.existsSync(imagePath)) { watermark.embedWatermark(imagePath, options); // ... } 

其次,还应该确保节点以具有适当读/写权限的用户身份运行,以更新映像文件。