首页 > 解决方案 > 节点获取图像,无论环境如何

问题描述

我正在尝试制作一个节点模块来绘制一个 PDF 文件,该文件需要在 Google Cloud Functions 的服务器端和 React 的客户端(create-react-app)中运行。PDF 的一部分是徽标 png。问题来自绘制徽标。

在服务器端,我可以这样做:

const getLogo = async (): Promise<Buffer> => {
  return new Promise((resolve, reject) => {
    fs.readFile(
      path.join(__dirname, "../assets/logo.png"),
      (err, data) => {
        if (!err) {
          return resolve(data);
        }

        return reject(err);
      }
    );
  });
};

// later on:
const logo = await pdfDoc.embedPng(await getLogo());

但是如果在客户端运行,我会收到一个错误,fs.readFile即不是函数。

在客户端,它就像导入图像一样简单:

import LOGO_PNG from '../assets/logo.png';

// and then:
const logo = await pdfDoc.embedPng(LOGO_PNG);

但是这两种方法都适用于服务器端和客户端。有没有一种不受环境影响的方法?

标签: javascriptnode.jsnode-modules

解决方案


推荐阅读