Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么即使我更改了输入文件,Sharp仍输出相同的文件?_Javascript_Node.js_Ubuntu_Sharp - Fatal编程技术网

Javascript 为什么即使我更改了输入文件,Sharp仍输出相同的文件?

Javascript 为什么即使我更改了输入文件,Sharp仍输出相同的文件?,javascript,node.js,ubuntu,sharp,Javascript,Node.js,Ubuntu,Sharp,在使用Sharp缩放和着色JPG后,我立即删除输入文件。当我上传一个同名的新文件时,Sharp将输出旧文件。我在Ubuntu 16.04上运行NodeJS 以下是编辑该文件的代码: sampleFile.mv(__dirname + "/" + name + "." + ext, function(err) { if (err) return res.status(500).send(err); res.send('File uploaded!'); if

在使用Sharp缩放和着色JPG后,我立即删除输入文件。当我上传一个同名的新文件时,Sharp将输出旧文件。我在Ubuntu 16.04上运行NodeJS

以下是编辑该文件的代码:

sampleFile.mv(__dirname + "/" + name + "." + ext, function(err) {
    if (err)
      return res.status(500).send(err);

    res.send('File uploaded!');

    if (ext != "xlsx") {
      // This will attempt to resize the images
      console.log("Sharpening image")
      sharp(__dirname + "/" + name + "." + ext).resize({ height: 27 }).flatten( { background: '#ffffff' } ).toFile("/var/www/my_ip/file.jpg")
        .then(function(newFileInfo) {
          // newFileInfo holds the output file properties
          console.log("Success")
          try {
            fileSystem.unlinkSync(__dirname + "/" + name + "." + ext)
            //file removed
          } catch(err) {
            console.error(err)
          }
          })
        .catch(function(err) {
          console.log("Error occured with file " + name + "." + ext + " | Dir: " + __dirname);
          console.log(err)
          try {
          fileSystem.unlinkSync(__dirname + "/" + name + "." + ext)
            //file removed
          } catch(err) {
            console.error(err)
          }
          //})
        }); //this line errored
    }

  });
第一次运行它时,它的工作原理与预期的一样,但是,如果我在第二次运行时使用的文件与原始文件同名,它将以某种方式记住旧文件并输出它。我不确定它是如何记住那个文件的,因为我立即删除了它。有没有办法解决这个问题


编辑:为了确保问题与未正确删除的第一个文件无关,我做了一个快速测试。首先,我使用服务器编辑一个文件,然后我将编辑后的文件作为输出,正如预期的那样。现在,我没有再次编辑同名的新文件,而是重新启动了服务器,然后编辑了同名的新文件。它现在正确地输出了新文件。我相信NPM一定有一些我不知道的缓存,目前正在读取文档,所以如果我的理论是正确的。

是的,我的理论是正确的!夏普确实有一个缓存,出于某种原因,它会打开以前编辑过的文件。这可能对优化有好处,但如果你和我有同样的问题,并且你不担心优化,你可以像这样打开缓存:

sharp.cache(false);

我已经浪费了一天的时间试图弄清楚为什么我在客户端输入的内容发送不同的文件,但在服务器中却一次又一次地获取相同的文件!发现这是我的节点api服务器上的一个问题,最后发现默认情况下缓存它的是sharp!