我编写了此函数,以便从几个目录中的某些svg文件生成png文件。我正在同步执行以下功能,并且按预期方式工作(与以下代码相同,但具有readFileSync),但被告知要重新执行它,以仅使用许用的fs函数。
当前代码会跳过groupA和groupB中的两个文件,以及其交换宽度。例如,我注意到转换函数不会为svg1
的{{1}}生成,但是会为dirB
的{{1}}生成,尽管它的宽度与{{1 }},共svg1
。
大多数文件都能正确转换,但很少能转换。我的猜测是时间上的问题,那么如何在解决问题的同时仍保持fs功能的正确性?
dirA
答案 0 :(得分:0)
您的代码看起来不错。我没有看到任何明显的现象会导致您描述的行为-您正在等待函数中的每个promise。您没有使用全局变量。
我要说这一行:
['dirA', 'dirB', 'dirC'].map(dir => convertSvgFiles(`src/${dir}`));
最终在具有3个转换器实例的所有3个目录 上并行运行函数。假设转换器中没有与并行相关的错误,那么这应该不会引起任何问题。
但仅出于笑容,请尝试将其更改为:
async function run() {
for (let d of ['dirA', 'dirB', 'dirC']) {
await convertSvgFiles(`src/${d}`)
}
}
run()
强制按顺序扫描文件夹。如果这样可以解决问题,则convert-svg-to-png
中存在一个错误。