Nodejs - 尝试使用 Exiftool 编辑图像的元数据

Nodejs - trying to edit images' metadata with Exiftool

我目前正在开发一个 NodeJS (Express) 项目,使用 Exiftool 编辑图像的元数据。 要使用 Exiftool 编辑图像的元数据,我必须创建一个包含所有要修改的元数据的 JSON 文件,然后执行命令:

exiftool -j=metadata.json pathToTheImage/image.jpg

json 文件必须如下所示:

[{"SourceFile":"pathToTheImage/image.jpg","XMP-dc:Title":"Image's title"}]

这是我的代码:

const {exec} = require('child_process');
let fs = require('fs');
let uploadPath = "uploads";
let uploadName = "image.jpg";

...

app.post('/metadata/editor', (req, res) => {
    let jsonToImport = [...];
    fs.writeFileSync("metadata.json", JSON.stringify(jsonToImport));
    exec('exiftool -j=metadata.json ' + uploadPath + '/' + uploadName, (error, stdout, stderr) => {
        if (error) {
            console.error(error);
            return;
        }
        res.redirect('/metadata/checker/' + uploadName);
    });
});

问题在 "writeFileSync/exec" 级别。 这两行独立运行良好,也就是说,如果我只有第一行,JSON 文件就创建好了。如果我只有第二条线,图像的元数据就会得到很好的更新。 但是当我一起执行这两行时,JSON 文件创建得很好但是执行行执行 "nothing" (或者我无法确定的东西)。 此代码使用同步函数,我用异步函数对其进行了测试,这是相同的行为。

目前,要执行我需要的操作,我必须执行上面的代码来创建 JSON 文件,然后我必须注释 writeFileSync 行并且我必须重新执行代码以正确更新图像的元数据。

真的很奇怪,我尝试在 exec 行之前读取 JSON 文件内容,但一切正常。我使用过异步函数,有和没有承诺......没有什么可做的,它不起作用。

感谢您的帮助。

我会回答我自己的问题:

问题是我使用了 nodemon,但是默认情况下 nodemon 监视 JSON 文件。但是在我的代码中,我创建了一个 JSON 文件以在之后立即使用它。所以,我正确地创建了 JSON 文件,nodemon 看到了它,并重新启动了节点服务器;其余代码没有 运行.

为了解决这个问题,我在 package.json:

中添加了一个选项来忽略创建的文件
"nodemonConfig": {
   "ignore": [
      "path/to/files/to/ingore/*"
    ]
}