部署服务器上的Next.js版本问题:"Next:Not Found"

描述:

在构建过程中,我的Next.js项目遇到了一个问题.本地构建和部署服务器期间的日志(log)如下所示.

Local Build Logs:

$ next build

   ▲ Next.js 14.1.0

   Creating an optimized production build ...
 ✓ Compiled successfully
 ✓ Linting and checking validity of types
 ✓ Collecting page data
 ✓ Generating static pages (5/5)
 ✓ Collecting build traces
 ✓ Finalizing page optimization

Route (app)                              Size     First Load JS
┌ ○ /                                    76.3 kB         160 kB
└ ○ /_not-found                          882 B          85.1 kB
+ First Load JS shared by all            84.2 kB
  ├ chunks/69-28f79be715c06873.js        28.9 kB
  ├ chunks/fd9d1056-f6b668df0b3d2561.js  53.4 kB
  └ other shared chunks (total)          1.96 kB


○  (Static)  prerendered as static content

以上输出表明构建在本地是成功的.

Deployment Server Error:

Run (npm run build)

  shell: /usr/bin/bash -e ***0***

> personal-portfolio@0.1.0 build
> next build

sh: 1: next: not found
Error: Process completed with exit code 127.

在部署服务器上,我遇到了一个无法识别next的问题.生成失败,退出代码为127

Things I've Tried:

  1. 已删除 node 模块、清除NPM缓存并重新安装->npm i
  2. 已删除Next并重新安装->NPM I Next
  3. 添加了跨环境->NPM I跨环境
  4. 添加依赖-"dev":"cross-env NODE_OPTIONS ='--inspect' next dev"

Package.json:

    {
  "name": "personal-portfolio",
  "version": "0.1.0",
  "private": true,
  "scripts": {
    "dev": "next dev",
    "build": "next build",
    "start": "next start",
    "lint": "next lint"
  },
  "dependencies": {
    "@tabler/icons-react": "^2.47.0",
    "@tsparticles/engine": "^3.2.1",
    "@tsparticles/react": "^3.0.0",
    "@tsparticles/slim": "^3.2.1",
    "classnames": "^2.5.1",
    "clsx": "^2.1.0",
    "cross-env": "^7.0.3",
    "framer-motion": "^11.0.5",
    "next": "^14.1.0",
    "react": "^18",
    "react-dom": "^18",
    "react-element-to-jsx-string": "^15.0.0",
    "react-hot-toast": "^2.4.1",
    "react-icons": "^5.0.1",
    "react-player": "^2.14.1",
    "sonner": "^1.4.0",
    "tailwind-merge": "^2.2.1",
    "tsparticles-engine": "^2.12.0"
  },
  "devDependencies": {
    "@types/node": "20.11.18",
    "@types/react": "18.2.55",
    "autoprefixer": "^10.0.1",
    "eslint": "^8",
    "eslint-config-next": "14.1.0",
    "postcss": "^8",
    "tailwindcss": "^3.4.1",
    "typescript": "^5.3.3"
  }
}

对解决这一问题的任何见解或指导都将不胜感激.谢谢!

推荐答案

您在部署服务器上获得"next: not found",因为命令npm install未在部署服务器上执行,并且依赖项未安装在那里.然而,build命令在本地系统上是成功的,因为依赖项已经在那里可用.

要解决此问题,请替换Package.json中的以下行

"build": "next build",

"build": "npm i && next build",

这将确保无论何时部署新更改,都会在部署服务器上执行npm i(安装)命令.

Reactjs相关问答推荐

REACT路由DOM根据参数呈现不同的路由

通过单击具有此值的按钮将值添加到数组对象键

react 路由GUGUD Use Effect无法通过useNavigate正常工作

在每页上应用字体-NextJS

ReactJS:唯一项目的数量总和

未定义发送的数据无法在reactjs中找到原因

useRef()的钩子调用无效

在 React 中将 MUI 样式外包到单独的文件中?

对于 ref 上的可见 prop 或 open 方法来react 组件,哪种方式更好?

下一个js如何从另一个组件更新组件?

如何在 ReactJS 中提交后删除 URL 中的查询参数

无法在 KeyDown 上调用 useCallback 函数

添加新行时自动打开可扩展表格(Antd 表格,ReactJS)

下一次导出:未捕获的语法错误:标识符注册表已被声明

Reactjs 表单未反映提交时的更改

Mui CardMedia 的图片组件

使用 useRef(uuid()) 的目的是什么?

Select MenuItem 时 Material-ui 不更改样式

react / firebase 基地.如何在我的项目中保存更新的数据?

react 路由:router.ts:11 没有匹配的路由位置/管理