Dmi*_*kin 4 eval ejs node.js express
您好,我正在尝试让pdfreader模块在 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);
}
});
`
Run Code Online (Sandbox Code Playgroud)
但是,当我从express基于我的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)
Run Code Online (Sandbox Code Playgroud)
看起来它所依赖的模块pdf2json正在尝试获取eval一些文件,但它不起作用:
eval(_fileContent);这是文件的内容pdf2json。
有人知道我能做些什么来让它发挥作用吗?
解决方案是在包含模块之前添加此内容pdfreader:
global.navigator = {
userAgent: 'node',
}
window.navigator = {
userAgent: 'node',
}
Run Code Online (Sandbox Code Playgroud)
我希望它能对其他人有所帮助,因为我花了 2 个小时尝试解决它。