TypeError:无法读取属性' userAgent' node.js app运行时未定义的错误

时间:2018-03-10 11:15:11

标签: node.js express eval ejs

您好我试图让pdfreader module在node.js中工作,将PDF转换为文本格式。

当我只使用命令行node sandbox/pdf.js(下面的内容)运行它时,它运行正常。

var pdfreader = require('pdfreader');

var rows = {}; // indexed by y-position

function printRows() {
  Object.keys(rows) // => array of y-positions (type: float)
    .sort((y1, y2) => parseFloat(y1) - parseFloat(y2)) // sort float positions
    .forEach((y) => console.log((rows[y] || []).join('')));
}

new pdfreader.PdfReader().parseFileItems('lib/sandbox/book-eric.pdf', function(err, item){
  if (!item || item.page) {
    // end of file, or page
    printRows();
    console.log('PAGE:', item.page);
    rows = {}; // clear rows for next page
  }
  else if (item.text) {
    // accumulate text items into rows object, per line
    (rows[item.y] = rows[item.y] || []).push(item.text);
  }
});
`

当我从基于express的{​​{1}}应用启动它时,使用node.js我在包含模块后立即收到以下错误

node app

错误是:

var pdfreader = require('pdfreader');

它看起来像是它所依赖的模块,TypeError: Cannot read property 'userAgent' of undefined at detectSyncFontLoadingSupport (eval at <anonymous> (/Users/deemeetree/Documents/Root/InfraNodus/node_modules/pdf2json/lib/pdf.js:60:1), <anonymous>:42060:38) at eval (eval at <anonymous> (/Users/deemeetree/Documents/Root/InfraNodus/node_modules/pdf2json/lib/pdf.js:60:1), <anonymous>:42066:5) 正试图获取某些文件的pdf2json并且它无法正常工作:

eval这是eval(_fileContent);个文件的内容。

任何人都知道我能做些什么让它发挥作用?

1 个答案:

答案 0 :(得分:3)

解决方案是在包含pdfreader模块之前添加它:

global.navigator = {
  userAgent: 'node',
}

window.navigator = {
  userAgent: 'node',
}

我希望它可以帮助其他人,因为我花了2个小时试图解决它。