2016-04-22 6 views
0

lesen Wenn ich ein PDF mit Jade-pdf-Redline aus meiner Jade-Vorlage erstellt werden soll, habe ich diesen Fehler:Jade-pdf-Redline nicht Eigenschaft 'Länge' undefiniert node.js

TypeError: Cannot read property 'length' of undefined on line 12 
at eval (eval at <anonymous> (/var/www/html/BP_webApp/node_modules/jade-pdf-redline/node_modules/jade/lib/jade.js:160:8), <anonymous>:62:26) 
at res (/var/www/html/BP_webApp/node_modules/jade-pdf-redline/node_modules/jade/lib/jade.js:161:38) 
at Stream.end (/var/www/html/BP_webApp/node_modules/jade-pdf-redline/lib/index.js:31:18) 
at _end (/var/www/html/BP_webApp/node_modules/jade-pdf-redline/node_modules/through/index.js:65:9) 
at Stream.stream.end (/var/www/html/BP_webApp/node_modules/jade-pdf-redline/node_modules/through/index.js:74:5) 
at Stream.onend (stream.js:59:10) 
at emitNone (events.js:85:20) 
at Stream.emit (events.js:179:7) 
at drain (/var/www/html/BP_webApp/node_modules/jade-pdf-redline/node_modules/through/index.js:34:23) 
at Stream.stream.queue.stream.push (/var/www/html/BP_webApp/node_modules/jade-pdf-redline/node_modules/through/index.js:45:5) 
at Stream.end (/var/www/html/BP_webApp/node_modules/jade-pdf-redline/node_modules/through/index.js:15:35) 
at _end (/var/www/html/BP_webApp/node_modules/jade-pdf-redline/node_modules/through/index.js:65:9) 
at Stream.stream.end (/var/www/html/BP_webApp/node_modules/jade-pdf-redline/node_modules/through/index.js:74:5) 
at Stream.method [as end] (/var/www/html/BP_webApp/node_modules/jade-pdf-redline/node_modules/duplexer/index.js:47:39) 
at ReadStream.onend (_stream_readable.js:491:10) 
at ReadStream.g (events.js:273:16) 
at emitNone (events.js:85:20) 
at ReadStream.emit (events.js:179:7) 
at endReadableNT (_stream_readable.js:906:12) 
at nextTickCallbackWith2Args (node.js:475:9) 
at process._tickCallback (node.js:389:17) 

Index. js

conn.query("SELECT * FROM tblForm", function(err, rows) { 
    if (err) { 
     console.log('Error selecting: %s', err); 
    } 

    for (var i in rows) { 
     console.log('Post: ', rows[i]); 
    } 

    res.render('form', { 
     title: 'titlw', 
     rows: rows 
    }); 

    fs.createReadStream('views/form.jade').pipe(jadepdf()).pipe(fs.createWriteStream('form.pdf')); 

    }); 

form.jade

- for(var i = 0, len = rows.length; i < len; i++) { 
       div 
        label Programme 
        input(style='float: right; clear: both; width: 300px;' value='#{rows[i].programme}') 
       div 
        br 
        label Action Type 
        input(style='float: right; clear: both; width: 300px;' value='#{rows[i].actionType}') 
       div 
        br 
        label Call 
        input(style='float: right; clear: both; width: 300px;' value='#{rows[i].callCell}') 
       div 
        br 
        label Language 
        input(style='float: right; clear: both; width: 300px;' value='#{rows[i].lang}') 
      - } 

Das API diese Zeile nicht lesen kann - für (var i = 0, len = rows.length; i < len; i ++) {. Hast du irgendwelche Vorschläge?

Antwort

0

Ich denke, Sie sollten rows Variable in jadepdf() Funktion übergeben.

var options = { 
    "locals": { 
     "rows": rows 
    } 
}; 

fs.createReadStream('views/form.jade').pipe(jadepdf(options)).pipe(fs.createWriteStream('form.pdf')); 

Denn wenn jadepdf es in .pdf zu konvertieren versucht, Jade Vorlage hat null Werte von rows.

+0

Vielen Dank! Es klappt :) – Shanho