我已经尝试了 1 周没有成功通过此 nodejs 模块呈现 psd 转换:https://www.npmjs.com/package/psd 尝试在转换所有图像后显示确认消息。 我不知道问题是否可以追溯到我的代码或承诺合规性,我已经尝试了 50 次来更改此代码的各个方面。
在 psdconverter.js 文件中
//! PSD COMPONENT MODULES
var PSD = require('psd');
//! file and extension MODULES
const fs = require('fs');
var path = require('path');
const PSDconverter = async (filename) => {
return new Promise((resolve, reject) => {
PSD.open('./img/' + filename).then(function (psd) {
let newfilename = filename.replace(/.psd/i, ""); //REPLACE CASE INSENSITIVE
psd.image.saveAsPng('./img/' + newfilename + '.png');
return newfilename;
}).then(function (res) {
console.log('PSD Conversion Finished!' + res);
resolve(res);
}).catch(function (err) {
console.log(err);
});
})
}
const EnumAndConvert = async () => {
return new Promise((resolve, reject) => {
//! READ DIR IMAGE AND CONVERTION PART
fs.readdir('./img/', (err, files) => {
if (err)
console.log(err + ' errore di conversione, non è stata trovata la cartella img!');
else {
for (let filename of files){
var ext = path.extname('./img/' + filename);
if (ext === '.PSD' || ext === '.psd')
await PSDconverter(filename);
}
}
})
resolve("Everything is converted successfully");
})
}
exports.PSDconverter = PSDconverter;
exports.EnumAndConvert = EnumAndConvert;
在 index.js 文件中
function PSDconverter() {
//! convertitore PSD
let EnumPSDAndConvert = require('./psdconverter.js');
EnumPSDAndConvert.EnumAndConvert().then((res) => { //dopo che è ritornata la Promise risolta continuo
console.log(res+"ciao");
})
}
错误结果: 等待PSDconverter(文件名); ^^^^^
语法错误:await 仅在异步函数中有效
当我希望第一个成为最后一个时。 谢谢大家的帮助!
答案 0 :(得分:1)
好的解决方案是: index.js
function PSDconverter() {
//! convertitore PSD
let EnumPSDAndConvert = require('./psdconverter.js');
EnumPSDAndConvert.EnumAndConvert().then(() => {
console.log("Conversion Completed");
})
}
psdconverter.js
//! PSD COMPONENT MODULES
var PSD = require('psd');
//! file and extension MODULES
const fs = require('fs');
var path = require('path');
const PSDconverter = (filename) => { //without async
return PSD.open('./img/' + filename).then(function (psd) {
let newfilename = filename.replace(/.psd/i, ""); //REPLACE CASE INSENSITIVE
psd.image.saveAsPng('./img/' + newfilename + '.png');
return newfilename;
}).then(function (res) {
console.log('PSD Conversion Finished!' + res);
}).catch(function (err) {
console.log(err);
});
}
function readImgDir() {
return new Promise((resolve, reject) => {
fs.readdir('./img/', (err, files) => {
if (err)
console.log(err + ' errore di conversione, non è stata trovata la cartella img!');
else {
resolve(files);
}
})
})
}
const EnumAndConvert = async () => {
var files = await readImgDir(); //! READ DIR IMAGE AND CONVERTION PART
for (let filename of files) {
var ext = path.extname('./img/' + filename);
if (ext === '.PSD' || ext === '.psd')
await PSDconverter(filename);
}
}
exports.PSDconverter = PSDconverter;
exports.EnumAndConvert = EnumAndConvert;
如果有关于如何改进代码的任何建议,我会很好奇。 再次感谢