diff --git a/lib/pdf.js b/lib/pdf.js index 46f2ce4..764bf80 100644 --- a/lib/pdf.js +++ b/lib/pdf.js @@ -123,12 +123,15 @@ PDF.prototype.exec = function PdfExec (callback) { // Ignore if code has a value of 0 since that means PhantomJS has executed and exited successfully. // Also, as per your script and standards, having a code value of 1 means one can always assume that // an error occured. - if (((typeof code !== 'undefined' && code !== null) && code !== 0) || err) { + if (((typeof code !== 'undefined' && code !== null) && code !== 0) || err || (code === 0 && !data)) { var error = null if (err) { // Rudimentary checking if err is an instance of the Error class error = err instanceof Error ? err : new Error(err) + } else if (code === 0 && !data) { + // This is to catch the edge case of having a exit code value of 0 but having no data (exit can be called before io pipes are closed) + error = new Error('html-pdf: Process exited successfully, but no data received') } else { // This is to catch the edge case of having a exit code value of 1 but having no error error = new Error('html-pdf: Unknown Error') @@ -150,7 +153,7 @@ PDF.prototype.exec = function PdfExec (callback) { // An exit event is most likely an error because we didn't get any data at this point child.on('close', respond) - child.on('exit', respond) + // child.on('exit', respond) var config = JSON.stringify({html: this.html, options: this.options}) child.stdin.write(config + '\n', 'utf8') diff --git a/package.json b/package.json index 39e319c..1104756 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "html-pdf", - "version": "3.0.1", + "version": "3.0.2-kv", "description": "HTML to PDF converter that uses phantomjs", "engines": { "node": ">=4.0.0"