node-html-to-image icon indicating copy to clipboard operation
node-html-to-image copied to clipboard

Next.js app crashes on vercel

Open DanyylSocol opened this issue 2 years ago • 1 comments

Error:

ERROR	Error: Cannot find module '/var/task/apps/web/.next/server/pages/[locale]/[theme]/[...catchall].js'
Require stack:
- /var/task/node_modules/next/dist/server/require.js
- /var/task/node_modules/next/dist/server/load-components.js
- /var/task/node_modules/next/dist/server/next-server.js
- /var/task/apps/web/___next_launcher.js
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:902:15)
    at Function.Module._load (internal/modules/cjs/loader.js:746:27)
    at Module.require (internal/modules/cjs/loader.js:974:19)
    at require (internal/modules/cjs/helpers.js:101:18)
    at Object.requirePage (/var/task/node_modules/next/dist/server/require.js:48:12)
    at Object.loadComponents (/var/task/node_modules/next/dist/server/load-components.js:58:23)
    at Server.findPageComponents (/var/task/node_modules/next/dist/server/next-server.js:1233:63)
    at Server.renderToResponse (/var/task/node_modules/next/dist/server/next-server.js:1609:59)
    at async Server.pipe (/var/task/node_modules/next/dist/server/next-server.js:1148:25)
    at async Object.fn (/var/task/node_modules/next/dist/server/next-server.js:949:21) {
  code: 'MODULE_NOT_FOUND',
  requireStack: [
    '/var/task/node_modules/next/dist/server/require.js',
    '/var/task/node_modules/next/dist/server/load-components.js',
    '/var/task/node_modules/next/dist/server/next-server.js',
    '/var/task/apps/web/___next_launcher.js'
  ],
  page: '/en-US/light/app/onboarding'
}

One more:

EvalError: Code generation from strings disallowed for this context
    at <anonymous>
    at worker.js:19:14050
    at webpack/bootstrap:21:0
    at ../../node_modules/next/dist/shared/lib/utils.js:1:12
    at webpack/bootstrap:21:0
    at ../../node_modules/next/dist/shared/lib/router/utils/parse-relative-url.js:7:4
    at webpack/bootstrap:21:0
    at ../../node_modules/next/dist/shared/lib/router/utils/parse-url.js:8:24
    at webpack/bootstrap:21:0
    at ../../node_modules/next/dist/shared/lib/router/utils/prepare-destination.js:10:9

When I delete node-html-to-image package - everything is ok

Code:

import nodeHtmlToImage from "node-html-to-image";

const image = (await nodeHtmlToImage({
      html: renderTweet(userData.verified),
      content: {
        name: userData.name,
        username: userData.username,
        time,
        date: dateString,
        text,
      },
      type: "jpeg",
      quality: 100,
      puppeteerArgs: { args: ["--no-sandbox", "--disable-setuid-sandbox"] }
 })) as Buffer;

HTML:

const font2base64 = require("node-font2base64");
import fs from "fs";

const _data = font2base64.encodeToDataUrlSync(
`./public/fonts/Infra-Regular.ttf`
);
const vereifiedImg = fs.readFileSync("./public/meta/Verified.svg");
const bakgroundImg = fs.readFileSync("./public/meta/Background.svg");
const base64Image = Buffer.from(vereifiedImg).toString("base64");
const base64BcgImage = Buffer.from(bakgroundImg).toString("base64");
const dataURI = "data:image/svg+xml;base64," + base64Image;
const dataBcgURI = "data:image/svg+xml;base64," + base64BcgImage;

export const renderTweet = (verified: boolean) => {
return `
<html>

<head>
 <style>
   @font-face {
     font-family: 'FFInfra';
     src: url(${_data}) format('woff2'); // don't forget the format!
   }

   html {
     box-sizing: border-box;
   }

   body {
     font-family: 'FFInfra', Fallback, sans-serif;
     width: 1000px;
     height: 1298px;
   }
 </style>
</head>

<body>
 <div class="container">
   {{name}}
   {{username}}
   <img class="header-verified-icon ${
       verified ? "verified" : ""
   }" src="${dataURI}"
   {{text}}
   <p>{{time}}</p>
   <p>{{date}}</p>
   <img class="background" src="${dataBcgURI}" />
 </div>
</body>

</html>
`;
};

DanyylSocol avatar May 19 '22 11:05 DanyylSocol

Puppeteer doesn't work on Vercel https://github.com/vercel/next.js/issues/29997

ivorpad avatar May 19 '22 11:05 ivorpad

Thank you @ivorpad for taking time to bring a answer 🙏

frinyvonnick avatar Jan 18 '23 10:01 frinyvonnick