繁体   English   中英

在 vercel 上使用 pdfjs-dist(无服务器功能)

[英]Using pdfjs-dist on vercel (serverless function)

我正在尝试在 Vercel Serverless Function 内的节点运行时使用pdfjs-dist package 来获取和解析 PDF 文件。

代码(打字稿):

import * as pdfjs from "pdfjs-dist/legacy/build/pdf";
...

const document = await pdfjs.getDocument(url).promise;
...

在本地,当运行vercel dev时一切正常。 但是在部署之后,当访问远程端点时,出现以下错误:

Error: Setting up fake worker failed: \"Cannot find module './pdf.worker.js'

知道是什么导致了本地 Vercel 执行和部署版本之间的这种差异吗?

  • 本地节点版本:v16.16
  • Vercel 节点版本:16.x
  • “pdfjs-dist”:“^3.0.279”

我找到了解决方案:

1:编译完成后,需要手动更改这行代码。 Vercel支持在package.json中指定自定义编译步骤:

"scripts": {
    "now-build": "node build.js"
}

2:使用build.js文件完成上面的替换:

const fs = require('fs');
const dir = 'node_modules/pdfjs-dist/es5/build/pdf.js';
const content = fs.readFileSync(dir, { encoding: 'utf-8' });
fs.writeFileSync(dir, content.replace('"./pdf.worker.js";', `__dirname + "/pdf.worker.js";`))
  1. 重新部署并享受::)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM