Sie verwenden die promisifizierte Version von execFile()
nicht ordnungsgemäß.
Sie tun sollten:
const Promise = require('bluebird');
const execFile = Promise.promisify(require('child_process').execFile);
execFile('find', [IMAGE_DIR]).then(function(stdout) {
// process result here
}).catch(function(err) {
// handle error here
});
Wenn Sie Zugriff benötigen sowohl auf stdout
und stderr
, dann müssen Sie die multiArgs Option .promisify()
passieren.
const Promise = require('bluebird');
const execFile = Promise.promisify(require('child_process').execFile, {multiArgs: true});
execFile('find', [IMAGE_DIR]).then(function(args) {
let stdout = args[0];
let stderr = args[1];
// process result here
}).catch(function(err) {
// handle error here
});
Sie dürfen keinen Rückruf an promisfied-Funktionen übergeben. Und Sie sollten niemals den 'neuen Promise'-Konstruktor selbst nennen. – Bergi
Vielen Dank für Ihren Kommentar, aber das hilft mir nicht. – Simon