无法读取未定义的 属性 'filename' 将 html-pdf 与 lambda 结合使用
Cannot read property 'filename' of undefined Using html-pdf with lambda
我在尝试使用 Lambda 函数从 HTML 创建 PDF 时遇到问题,我收到以下错误:
{
"errorType": "TypeError",
"errorMessage": "Cannot read property 'filename' of undefined",
"trace": [
"TypeError: Cannot read property 'filename' of undefined",
" at execPdfToBuffer (/var/task/node_modules/html-pdf/lib/pdf.js:48:21)",
" at ChildProcess.respond (/var/task/node_modules/html-pdf/lib/pdf.js:144:5)",
" at ChildProcess.emit (events.js:314:20)",
" at ChildProcess.EventEmitter.emit (domain.js:483:12)",
" at Process.ChildProcess._handle.onexit (internal/child_process.js:276:12)"
]
}
我的代码是:
try{
let arq = await new Promise((res,rej)=>{
pdf.create(html,{
format: "Letter",
orientation: "portrait",
phantomPath: '/opt/phantomjs_linux-x86_64'
}).toBuffer(function(err, buffer){
if (err){
rej(false);
}else{
res(buffer);
}
});
});
const params = {
Key: 'teste.pdf',
Body: arq, // <---------
Bucket: 'temp'
};
let S3 = new AWS.S3();
let response = await S3.upload(params).promise();
if (response){
return true;
}else{
return false;
}
}catch(err){
console.log(err);
return false;
}
我读过这个主题:html-pdf package is not working on aws lambda
但是建议的解决方案对我不起作用。
提前致谢
我也运行关注这个问题。我通过将 html-pdf
从版本 3.0.1
降级到版本 2.2.0
.
来修复它
较新版本的 release notes 不那么鼓舞人心:“不确定这个模块是否可以在不手动安装 phantomjs 的情况下使用”
也许有办法让版本 3 与 lambda 一起工作。但降级对我来说是一个快速的胜利。
在版本 3.0.1 中,您可以设置标志 localUrlAccess: true, ,它将起作用
我在尝试使用 Lambda 函数从 HTML 创建 PDF 时遇到问题,我收到以下错误:
{
"errorType": "TypeError",
"errorMessage": "Cannot read property 'filename' of undefined",
"trace": [
"TypeError: Cannot read property 'filename' of undefined",
" at execPdfToBuffer (/var/task/node_modules/html-pdf/lib/pdf.js:48:21)",
" at ChildProcess.respond (/var/task/node_modules/html-pdf/lib/pdf.js:144:5)",
" at ChildProcess.emit (events.js:314:20)",
" at ChildProcess.EventEmitter.emit (domain.js:483:12)",
" at Process.ChildProcess._handle.onexit (internal/child_process.js:276:12)"
]
}
我的代码是:
try{
let arq = await new Promise((res,rej)=>{
pdf.create(html,{
format: "Letter",
orientation: "portrait",
phantomPath: '/opt/phantomjs_linux-x86_64'
}).toBuffer(function(err, buffer){
if (err){
rej(false);
}else{
res(buffer);
}
});
});
const params = {
Key: 'teste.pdf',
Body: arq, // <---------
Bucket: 'temp'
};
let S3 = new AWS.S3();
let response = await S3.upload(params).promise();
if (response){
return true;
}else{
return false;
}
}catch(err){
console.log(err);
return false;
}
我读过这个主题:html-pdf package is not working on aws lambda 但是建议的解决方案对我不起作用。
提前致谢
我也运行关注这个问题。我通过将 html-pdf
从版本 3.0.1
降级到版本 2.2.0
.
较新版本的 release notes 不那么鼓舞人心:“不确定这个模块是否可以在不手动安装 phantomjs 的情况下使用”
也许有办法让版本 3 与 lambda 一起工作。但降级对我来说是一个快速的胜利。
在版本 3.0.1 中,您可以设置标志 localUrlAccess: true, ,它将起作用