NextJS 13 上的 Puppeteer 问题:TypeError:oe 不是函数

Seb*_*ian 8 npm typescript reactjs next.js puppeteer

我有我的项目,它工作完美,在 app/api/getItem/route.ts 中有一个功能,该功能工作得很好,并且使用 import puppeteer from 'puppeteer',但我在卸载未使用的软件包时意外运行了 npm uninstall puppeteer ,但重新安装我一意识到这一点。我的路线现在不起作用,并且不断收到以下错误:

Server Error
TypeError: oe is not a function

This error happened while generating the page. Any console logs will be displayed in the terminal window.
Call Stack
oe
node_modules/@puppeteer/browsers/node_modules/yargs/build/index.cjs (1:61375)
(sc_server)/./node_modules/@puppeteer/browsers/node_modules/yargs/build/index.cjs
file:///Users/sebastianrubina/Documents/webdev/projects/affiliate-links/.next/server/app/api/getItem/route.js (1725:1)
__webpack_require__
file:///Users/sebastianrubina/Documents/webdev/projects/affiliate-links/.next/server/webpack-runtime.js (33:43)
eval
webpack-internal:///(sc_server)/./node_modules/@puppeteer/browsers/node_modules/yargs/yargs.mjs (5:74)
(sc_server)/./node_modules/@puppeteer/browsers/node_modules/yargs/yargs.mjs
file:///Users/sebastianrubina/Documents/webdev/projects/affiliate-links/.next/server/app/api/getItem/route.js (2044:1)
__webpack_require__
file:///Users/sebastianrubina/Documents/webdev/projects/affiliate-links/.next/server/webpack-runtime.js (33:43)
eval
webpack-internal:///(sc_server)/./node_modules/@puppeteer/browsers/lib/esm/CLI.js (10:69)
(sc_server)/./node_modules/@puppeteer/browsers/lib/esm/CLI.js
file:///Users/sebastianrubina/Documents/webdev/projects/affiliate-links/.next/server/app/api/getItem/route.js (1736:1)
__webpack_require__
file:///Users/sebastianrubina/Documents/webdev/projects/affiliate-links/.next/server/webpack-runtime.js (33:43)
eval
webpack-internal:///(sc_server)/./node_modules/@puppeteer/browsers/lib/esm/main.js (26:65)
(sc_server)/./node_modules/@puppeteer/browsers/lib/esm/main.js
file:///Users/sebastianrubina/Documents/webdev/projects/affiliate-links/.next/server/app/api/getItem/route.js (1890:1)
__webpack_require__
file:///Users/sebastianrubina/Documents/webdev/projects/affiliate-links/.next/server/webpack-runtime.js (33:43)
eval
webpack-internal:///(sc_server)/./node_modules/puppeteer-core/lib/esm/puppeteer/node/ChromeLauncher.js (7:77)
(sc_server)/./node_modules/puppeteer-core/lib/esm/puppeteer/node/ChromeLauncher.js
file:///Users/sebastianrubina/Documents/webdev/projects/affiliate-links/.next/server/app/api/getItem/route.js (2924:1)
__webpack_require__
file:///Users/sebastianrubina/Documents/webdev/projects/affiliate-links/.next/server/webpack-runtime.js (33:43)
eval
webpack-internal:///(sc_server)/./node_modules/puppeteer-core/lib/esm/puppeteer/node/node.js (11:76)
(sc_server)/./node_modules/puppeteer-core/lib/esm/puppeteer/node/node.js
file:///Users/sebastianrubina/Documents/webdev/projects/affiliate-links/.next/server/app/api/getItem/route.js (2990:1)
__webpack_require__
file:///Users/sebastianrubina/Documents/webdev/projects/affiliate-links/.next/server/webpack-runtime.js (33:43)
eval
webpack-internal:///(sc_server)/./node_modules/puppeteer-core/lib/esm/puppeteer/puppeteer-core.js (140:71)
(sc_server)/./node_modules/puppeteer-core/lib/esm/puppeteer/puppeteer-core.js
file:///Users/sebastianrubina/Documents/webdev/projects/affiliate-links/.next/server/app/api/getItem/route.js (3001:1)
__webpack_require__
file:///Users/sebastianrubina/Documents/webdev/projects/affiliate-links/.next/server/webpack-runtime.js (33:43)
eval
webpack-internal:///(sc_server)/./node_modules/puppeteer/lib/esm/puppeteer/puppeteer.js (138:99)
(sc_server)/./node_modules/puppeteer/lib/esm/puppeteer/puppeteer.js
file:///Users/sebastianrubina/Documents/webdev/projects/affiliate-links/.next/server/app/api/getItem/route.js (3133:1)
__webpack_require__
file:///Users/sebastianrubina/Documents/webdev/projects/affiliate-links/.next/server/webpack-runtime.js (33:43)
eval
webpack-internal:///(sc_server)/./app/api/getItem/route.ts (5:67)
(sc_server)/./app/api/getItem/route.ts
file:///Users/sebastianrubina/Documents/webdev/projects/affiliate-links/.next/server/app/api/getItem/route.js (344:1)
__webpack_require__
file:///Users/sebastianrubina/Documents/webdev/projects/affiliate-links/.next/server/webpack-runtime.js (33:43)
eval
webpack-internal:///(sc_server)/./node_modules/next/dist/build/webpack/loaders/next-app-loader.js (13:147)
(sc_server)/./node_modules/next/dist/build/webpack/loaders/next-app-loader.js?name=app%2Fapi%2FgetItem%2Froute&appPaths=&pagePath=private-next-app-dir%2Fapi%2FgetItem%2Froute.ts&appDir=%2FUsers%2Fsebastianrubina%2FDocuments%2Fwebdev%2Fprojects%2Faffiliate-links%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsebastianrubina%2FDocuments%2Fwebdev%2Fprojects%2Faffiliate-links&isDev=true&tsconfigPath=tsconfig.json&assetPrefix=!
file:///Users/sebastianrubina/Documents/webdev/projects/affiliate-links/.next/server/app/api/getItem/route.js (333:1)
__webpack_require__
file:///Users/sebastianrubina/Documents/webdev/projects/affiliate-links/.next/server/webpack-runtime.js (33:43)
__webpack_exec__
file:///Users/sebastianrubina/Documents/webdev/projects/affiliate-links/.next/server/app/api/getItem/route.js (3187:39)
<unknown>
file:///Users/sebastianrubina/Documents/webdev/projects/affiliate-links/.next/server/app/api/getItem/route.js (3188:28)
Object.<anonymous>
file:///Users/sebastianrubina/Documents/webdev/projects/affiliate-links/.next/server/app/api/getItem/route.js (3191:3)
Module._compile
node:internal/modules/cjs/loader (1159:14)
Module._extensions..js
node:internal/modules/cjs/loader (1213:10)
Module.load
node:internal/modules/cjs/loader (1037:32)
Module._load
node:internal/modules/cjs/loader (878:12)
Module.require
node:internal/modules/cjs/loader (1061:19)
require
node:internal/modules/cjs/helpers (103:18)
Object.requirePage
file:///Users/sebastianrubina/Documents/webdev/projects/affiliate-links/node_modules/next/dist/server/require.js (88:12)
<unknown>
file:///Users/sebastianrubina/Documents/webdev/projects/affiliate-links/node_modules/next/dist/server/load-components.js (49:73)
async Object.loadComponentsImpl [as loadComponents]
file:///Users/sebastianrubina/Documents/webdev/projects/affiliate-links/node_modules/next/dist/server/load-components.js (49:26)
async DevServer.findPageComponentsImpl
file:///Users/sebastianrubina/Documents/webdev/projects/affiliate-links/node_modules/next/dist/server/next-server.js (600:36)
Run Code Online (Sandbox Code Playgroud)

这是我的 api 路线:

Server Error
TypeError: oe is not a function

This error happened while generating the page. Any console logs will be displayed in the terminal window.
Call Stack
oe
node_modules/@puppeteer/browsers/node_modules/yargs/build/index.cjs (1:61375)
(sc_server)/./node_modules/@puppeteer/browsers/node_modules/yargs/build/index.cjs
file:///Users/sebastianrubina/Documents/webdev/projects/affiliate-links/.next/server/app/api/getItem/route.js (1725:1)
__webpack_require__
file:///Users/sebastianrubina/Documents/webdev/projects/affiliate-links/.next/server/webpack-runtime.js (33:43)
eval
webpack-internal:///(sc_server)/./node_modules/@puppeteer/browsers/node_modules/yargs/yargs.mjs (5:74)
(sc_server)/./node_modules/@puppeteer/browsers/node_modules/yargs/yargs.mjs
file:///Users/sebastianrubina/Documents/webdev/projects/affiliate-links/.next/server/app/api/getItem/route.js (2044:1)
__webpack_require__
file:///Users/sebastianrubina/Documents/webdev/projects/affiliate-links/.next/server/webpack-runtime.js (33:43)
eval
webpack-internal:///(sc_server)/./node_modules/@puppeteer/browsers/lib/esm/CLI.js (10:69)
(sc_server)/./node_modules/@puppeteer/browsers/lib/esm/CLI.js
file:///Users/sebastianrubina/Documents/webdev/projects/affiliate-links/.next/server/app/api/getItem/route.js (1736:1)
__webpack_require__
file:///Users/sebastianrubina/Documents/webdev/projects/affiliate-links/.next/server/webpack-runtime.js (33:43)
eval
webpack-internal:///(sc_server)/./node_modules/@puppeteer/browsers/lib/esm/main.js (26:65)
(sc_server)/./node_modules/@puppeteer/browsers/lib/esm/main.js
file:///Users/sebastianrubina/Documents/webdev/projects/affiliate-links/.next/server/app/api/getItem/route.js (1890:1)
__webpack_require__
file:///Users/sebastianrubina/Documents/webdev/projects/affiliate-links/.next/server/webpack-runtime.js (33:43)
eval
webpack-internal:///(sc_server)/./node_modules/puppeteer-core/lib/esm/puppeteer/node/ChromeLauncher.js (7:77)
(sc_server)/./node_modules/puppeteer-core/lib/esm/puppeteer/node/ChromeLauncher.js
file:///Users/sebastianrubina/Documents/webdev/projects/affiliate-links/.next/server/app/api/getItem/route.js (2924:1)
__webpack_require__
file:///Users/sebastianrubina/Documents/webdev/projects/affiliate-links/.next/server/webpack-runtime.js (33:43)
eval
webpack-internal:///(sc_server)/./node_modules/puppeteer-core/lib/esm/puppeteer/node/node.js (11:76)
(sc_server)/./node_modules/puppeteer-core/lib/esm/puppeteer/node/node.js
file:///Users/sebastianrubina/Documents/webdev/projects/affiliate-links/.next/server/app/api/getItem/route.js (2990:1)
__webpack_require__
file:///Users/sebastianrubina/Documents/webdev/projects/affiliate-links/.next/server/webpack-runtime.js (33:43)
eval
webpack-internal:///(sc_server)/./node_modules/puppeteer-core/lib/esm/puppeteer/puppeteer-core.js (140:71)
(sc_server)/./node_modules/puppeteer-core/lib/esm/puppeteer/puppeteer-core.js
file:///Users/sebastianrubina/Documents/webdev/projects/affiliate-links/.next/server/app/api/getItem/route.js (3001:1)
__webpack_require__
file:///Users/sebastianrubina/Documents/webdev/projects/affiliate-links/.next/server/webpack-runtime.js (33:43)
eval
webpack-internal:///(sc_server)/./node_modules/puppeteer/lib/esm/puppeteer/puppeteer.js (138:99)
(sc_server)/./node_modules/puppeteer/lib/esm/puppeteer/puppeteer.js
file:///Users/sebastianrubina/Documents/webdev/projects/affiliate-links/.next/server/app/api/getItem/route.js (3133:1)
__webpack_require__
file:///Users/sebastianrubina/Documents/webdev/projects/affiliate-links/.next/server/webpack-runtime.js (33:43)
eval
webpack-internal:///(sc_server)/./app/api/getItem/route.ts (5:67)
(sc_server)/./app/api/getItem/route.ts
file:///Users/sebastianrubina/Documents/webdev/projects/affiliate-links/.next/server/app/api/getItem/route.js (344:1)
__webpack_require__
file:///Users/sebastianrubina/Documents/webdev/projects/affiliate-links/.next/server/webpack-runtime.js (33:43)
eval
webpack-internal:///(sc_server)/./node_modules/next/dist/build/webpack/loaders/next-app-loader.js (13:147)
(sc_server)/./node_modules/next/dist/build/webpack/loaders/next-app-loader.js?name=app%2Fapi%2FgetItem%2Froute&appPaths=&pagePath=private-next-app-dir%2Fapi%2FgetItem%2Froute.ts&appDir=%2FUsers%2Fsebastianrubina%2FDocuments%2Fwebdev%2Fprojects%2Faffiliate-links%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsebastianrubina%2FDocuments%2Fwebdev%2Fprojects%2Faffiliate-links&isDev=true&tsconfigPath=tsconfig.json&assetPrefix=!
file:///Users/sebastianrubina/Documents/webdev/projects/affiliate-links/.next/server/app/api/getItem/route.js (333:1)
__webpack_require__
file:///Users/sebastianrubina/Documents/webdev/projects/affiliate-links/.next/server/webpack-runtime.js (33:43)
__webpack_exec__
file:///Users/sebastianrubina/Documents/webdev/projects/affiliate-links/.next/server/app/api/getItem/route.js (3187:39)
<unknown>
file:///Users/sebastianrubina/Documents/webdev/projects/affiliate-links/.next/server/app/api/getItem/route.js (3188:28)
Object.<anonymous>
file:///Users/sebastianrubina/Documents/webdev/projects/affiliate-links/.next/server/app/api/getItem/route.js (3191:3)
Module._compile
node:internal/modules/cjs/loader (1159:14)
Module._extensions..js
node:internal/modules/cjs/loader (1213:10)
Module.load
node:internal/modules/cjs/loader (1037:32)
Module._load
node:internal/modules/cjs/loader (878:12)
Module.require
node:internal/modules/cjs/loader (1061:19)
require
node:internal/modules/cjs/helpers (103:18)
Object.requirePage
file:///Users/sebastianrubina/Documents/webdev/projects/affiliate-links/node_modules/next/dist/server/require.js (88:12)
<unknown>
file:///Users/sebastianrubina/Documents/webdev/projects/affiliate-links/node_modules/next/dist/server/load-components.js (49:73)
async Object.loadComponentsImpl [as loadComponents]
file:///Users/sebastianrubina/Documents/webdev/projects/affiliate-links/node_modules/next/dist/server/load-components.js (49:26)
async DevServer.findPageComponentsImpl
file:///Users/sebastianrubina/Documents/webdev/projects/affiliate-links/node_modules/next/dist/server/next-server.js (600:36)
Run Code Online (Sandbox Code Playgroud)

我评论了与 puppeteer 相关的所有内容,现在该功能可以运行,为什么会这样?

我尝试使用 --turbo 运行,尝试删除 node_modules 和 package-lock.json 并重新运行 npm install,但没有成功。

这是我的 package.json:

import { NextApiResponse } from "next";
// import puppeteer from "puppeteer";

export async function POST(request: Request, response: NextApiResponse) {
  // const body = request.body;
  const req = await request.json();
  const url = req.amazonUrl;
  console.log("url", url);

  // const browser = await puppeteer.launch({
  //   headless: true,
  //   defaultViewport: null,
  // });
  // const page = await browser.newPage();
  // await page.goto(url, {
  //   waitUntil: "domcontentloaded",
  // });

  // const item = await page.evaluate(() => {
  //   const title = document.querySelector("#productTitle")?.innerHTML.trim();

  //   const imageContainer = document.querySelector(".imgTagWrapper");
  //   const imageUrl = imageContainer?.querySelector("img")?.src;
  //   const rating = document.querySelector(".a-icon-alt")?.textContent?.trim();
  //   let price = document
  //     .querySelector("#sns-base-price")
  //     ?.textContent?.trim()
  //     .slice(1)
  //     .replace(",", "");
  //   if (!price) {
  //     price = document
  //       .querySelector(".a-price-whole")
  //       ?.textContent?.trim()
  //       .replace(",", "");
  //   }
  //   console.log("ITEM: " + item);
  //   return { title, price, imageUrl, rating };
  // });

  // return new Response(JSON.stringify(item));

  return new Response(
    JSON.stringify({
      title: "hi",
      price: 10,
      imageUrl: "https://www.google.com",
      rating: 3,
    })
  );
}
Run Code Online (Sandbox Code Playgroud)

我的npm版本是8.19.2,我的node版本是18.12.1。

当我取消注释该const browser = await puppeteer.launch...行时,问题就会发生。