Next.js 13 + AWS CDK v2,放大。动态路由 SSR 中出现 500 内部服务器错误

问题描述 投票:0回答:2

用 amplify 和 CDKv2 制作了一个小型的 next.js13 项目。当我转到 url -> item/[id] 时,它给我 500 内部服务器错误。仅在我部署到生产环境后才会出现此问题。当我使用 npm run dev 进行测试时,一切都在本地运行。

在任何地方都找不到解决此问题的方法。

注意 -> 没有编写 API。只是从应用程序目录中获取 items.tsx 文件。它导出一个名为 items 的变量,它是 json 项目的列表。

尝试了一些事情。

  • 在 item/[id] page.tsx 中做了一些 console.log。他们都没有被记录。
  • 尝试干净安装 npm 软件包,但不起作用。
  • 检查网络控制台。说内部服务器错误 500 和“发生客户端异常”
  • 检查了 Amplify(前端)的构建阶段,我在那里看到的唯一有用的东西是我的页面被视为服务器。

路线(app)大小先加载JS

├ λ /(.)item/[id] 0 B 0 B

└ λ /item/[id] 777 B 99 kB

[INFO]:λ(服务器)服务器端在运行时渲染(使用 getInitialProps 或 getServerSideProps)

  • 检查访问日志

访问日志图像 1 访问日志图像 2 在这里我看到它在 x-edge-detailed-result-type 中显示 OriginError。

花了很多时间来修复这个 OriginError,尝试以不同的方式修改 next.config.js,使用各种标头,甚至使用“*”。

cors aws-amplify server-side-rendering aws-cdk next.js13
2个回答
4
投票

我启用了 Amplify Hosting Compute Logs 并在 CloudWatch 日志中看到了这一点:

错误 [ERR_PACKAGE_PATH_NOT_EXPORTED]:包子路径“./server.edge” 不是由“出口”定义的 /var/task/node_modules/react-dom/package.json 在新的 NodeError 处 (节点:内部/错误:387:5)在 throwExportsNotFound (节点:内部/模块/esm/resolve:365:9) 在 packageExportsResolve (节点:内部/模块/esm/resolve:649:3)在resolveExports (节点:内部/模块/cjs/loader:556:36)位于 Function.Module._findPath (node:internal/modules/cjs/loader:596:31) .....(还有几行) ...代码:'ERR_PACKAGE_PATH_NOT_EXPORTED'}

这似乎是一个已知问题。 链接 有一个简单的放大修复方法:

  1. 设置环境变量
    __NEXT_PRIVATE_PREBUNDLED_REACT=next
  2. 添加服务器运行时访问权限以构建前端设置:

构建:

commands:
  - env | grep -e __NEXT_PRIVATE_PREBUNDLED_REACT >> .env.production
  - npm run build

这应该可以解决问题。


0
投票

谢谢马哈茂德!

错误:

  • 获取简历时出错:CredentialsProviderError:无法加载 来自任何提供商的凭证
  • 使用 next.js 进行放大 500 内部 服务器错误。
  • 500 内部服务器错误

对我有用的是:

AWS Amplify > 构建设置

放大.yml

backend:
  phases:
    build:
      commands:
        - '# Execute Amplify CLI with the helper script'
        - amplifyPush --simple
frontend:
  phases:
    preBuild:
      commands:
        - yarn install --frozen-lockfile
    build:
      commands:
        - echo "__NEXT_PRIVATE_PREBUNDLED_REACT=next" >> .env.production
        - env | grep -e __NEXT_PRIVATE_PREBUNDLED_REACT >> .env.production
        - yarn run build
  artifacts:
    baseDirectory: .next
    files:
      - '**/*'
  cache:
    paths:
      - .next/cache/**/*
      - node_modules/**/*```
© www.soinside.com 2019 - 2024. All rights reserved.