You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级Node.js v18后Vercel部署Node项目报错求助

问题背景

我参考在线入门教程搭建了一个用于Twitch直播的简单TypeScript API,观众使用该CLI在聊天中互动已有2年,运行一直正常。近期更新代码后,Vercel部署失败,提示需升级至Node.js v18;在Vercel项目设置中完成版本升级后,构建部署时出现以下错误:

[10:40:58.919] Running build in Washington, D.C., USA (East) – iad1
[10:40:58.985] Cloning bitbucket.org/JonWiesman/twitchbot (Branch: master, Commit: 2222239)
[10:41:00.430] Cloning completed: 1.445s
[10:41:00.571] Skipping build cache since Node.js version changed from "16.x" to "18.x"
[10:41:01.133] Running "vercel build"
[10:41:01.644] Vercel CLI 30.2.3
[10:41:01.893] Installing dependencies...
[10:41:02.687] npm WARN old lockfile 
[10:41:02.687] npm WARN old lockfile The package-lock.json file was created with an old version of npm,
[10:41:02.688] npm WARN old lockfile so supplemental metadata must be fetched from the registry.
[10:41:02.688] npm WARN old lockfile 
[10:41:02.688] npm WARN old lockfile This is a one-time fix-up, please be patient...
[10:41:02.688] npm WARN old lockfile 
[10:41:10.357] npm WARN deprecated urix@0.1.0: Please see https://github.com/lydell/urix#deprecated
[10:41:10.708] npm WARN deprecated source-map-resolve@0.5.3: See https://github.com/lydell/source-map-resolve#deprecated
[10:41:10.835] npm WARN deprecated resolve-url@0.2.1: https://github.com/lydell/resolve-url#deprecated
[10:41:10.917] npm WARN deprecated source-map-url@0.4.0: See https://github.com/lydell/source-map-url#deprecated
[10:41:11.312] npm WARN deprecated querystring@0.2.0: The querystring API is considered Legacy. new code should use the URLSearchParams API instead.
[10:41:12.466] npm WARN deprecated chokidar@2.1.8: Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies
[10:41:28.905] 
[10:41:28.905] added 651 packages in 27s
[10:41:28.905] 
[10:41:28.905] 30 packages are looking for funding
[10:41:28.906]   run `npm fund` for details
[10:41:28.933] Detected Next.js version: 10.0.3
[10:41:28.940] Detected `package-lock.json` generated by npm 7+...
[10:41:28.940] Running "npm run build"
[10:41:29.238] 
[10:41:29.238] > with-typescript@1.0.0 build
[10:41:29.239] > next build
[10:41:29.239] 
[10:41:29.882] Browserslist: caniuse-lite is outdated. Please run:
[10:41:29.882] npx browserslist@latest --update-db
[10:41:29.930] node:internal/errors:490
[10:41:29.931]     ErrorCaptureStackTrace(err);
[10:41:29.931]     ^
[10:41:29.931] 
[10:41:29.931] Error [ERR_PACKAGE_PATH_NOT_EXPORTED]: Package subpath './lib/parser' is not defined by "exports" in /vercel/path0/underbot/node_modules/postcss/package.json
[10:41:29.931]     at new NodeError (node:internal/errors:399:5)
[10:41:29.931]     at exportsNotFound (node:internal/modules/esm/resolve:361:10)
[10:41:29.931]     at packageExportsResolve (node:internal/modules/esm/resolve:697:9)
[10:41:29.931]     at resolveExports (node:internal/modules/cjs/loader:565:36)
[10:41:29.931]     at Module._findPath (node:internal/modules/cjs/loader:634:31)
[10:41:29.932]     at Module._resolveFilename (node:internal/modules/cjs/loader:1061:27)
[10:41:29.932]     at Module._load (node:internal/modules/cjs/loader:920:27)
[10:41:29.932]     at Module.require (node:internal/modules/cjs/loader:1141:19)
[10:41:29.932]     at require (node:internal/modules/cjs/helpers:110:18)
[10:41:29.932]     at 552 (/vercel/path0/underbot/node_modules/next/dist/compiled/postcss-scss/scss-syntax.js:1:11590) {
[10:41:29.932]   code: 'ERR_PACKAGE_PATH_NOT_EXPORTED'
[10:41:29.933] }
[10:41:29.933] 
[10:41:29.933] Node.js v18.15.0
[10:41:29.955] Error: Command "npm run build" exited with 1
[10:41:30.431] BUILD_UTILS_SPAWN_1: Command "npm run build" exited with 1

尝试执行npm update命令,但系统提示不存在package.json(实际项目中有package-lock.json),不清楚问题根源,希望得到解决方案。

解决方案

1. 解决npm update提示找不到package.json的问题

  • 确认执行npm update的目录是项目根目录,若不是,切换到根目录后重新执行。
  • 如果package.json确实丢失,先运行npm init -y生成基础配置文件,再执行npm install,npm会自动根据package-lock.json同步依赖版本。

2. 修复postcss导出路径错误

这个错误是因为Node.js 18对ES模块导出的解析更严格,而你使用的Next.js 10.0.3依赖的postcss版本不兼容Node.js 18,有两种解决方式:

方式一:升级Next.js到兼容版本

在项目根目录执行:

npm install next@latest

更新完成后,提交更新后的package.json和package-lock.json到仓库,重新触发Vercel构建。

方式二:锁定兼容的postcss版本

在package.json的dependencies或devDependencies中添加:

"postcss": "^8.4.21"

然后执行:

npm install

提交更新后的文件到仓库,重新部署。

3. 清理旧依赖缓存

删除项目根目录的node_modules文件夹和package-lock.json文件,然后执行:

npm install

重新生成适配Node.js 18的依赖文件,避免旧版本冲突。

内容的提问来源于stack exchange,提问作者JonWiesman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 17:32:04