【问题标题】:TypeError: Cannot read property 'userAgent' of undefined error on node.js app runTypeError:无法读取 node.js 应用程序运行时未定义错误的属性“userAgent”
【发布时间】:2018-03-11 00:15:15
【问题描述】:

您好,我正在尝试让 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);
  }
});
`

但是,当我从基于 expressnode.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);pdf2json文件的内容。

有谁知道我可以做些什么来让它工作?

【问题讨论】:

  • 单独运行和服务器运行有什么区别?
  • 你的相对路径在这里正确吗? /pdf2json/lib/pdf.js /sandbox/ 包含在哪里?

标签: node.js express eval ejs


【解决方案1】:

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

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

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

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

【讨论】:

猜你喜欢
  • 2017-10-13
  • 1970-01-01
  • 2020-08-13
  • 2020-05-15
  • 1970-01-01
  • 2021-11-30
  • 2021-11-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多