【问题标题】:Problems with Now 2 migrationNow 2 迁移的问题
【发布时间】:2023-03-22 03:23:01
【问题描述】:

作为 Spectrum 上的 stated here,我在将 Next 网站从 Express 自定义服务器迁移到 Now 时遇到了麻烦。我的问题是我无法获取主页,因为我正在尝试发送 URL 参数,但没有成功。我需要传递一个lang参数,如下:

localhost:3000/en

然后,我必须按预期获得主页。但我收到了这个异常:

TypeError: 无法读取 Function.getInitialProps (/Users/lucacattide/Vagrant/debian/public/LC/front-end/.next/server/static/development/pages/_document.js: 1111:32)

那是因为我之前因为各种原因从_document.jsgetInitialProps读取ctx.req.params.lang参数。即使用 ctx.req.query.lang 替换它,我仍然可以得到它。

我目前正在复制 Zeit 迁移指南和文章中的两个示例。正如两人所建议的那样,我正在尝试API 方法(https://zeit.co/guides/migrate-to-zeit-now/)和pages 一种(https://zeit.co/guides/custom-next-js-server-to-routes/)。 在 API 一中,我在/api 路径中实现了[lang].js 段,内容如下:

module.exports = (req, res) => {
  res.send(req.query.lang);
}

然后使用/pages 之一,我将index.js 复制并在同一路径内重命名为[lang].js,并替换了上面提到的req.query.lang。这两个都不行。我遇到了同样的异常,警告_document.js。我需要它,因为它里面有不同的过程,所以在我的情况下删除它不是一个选项。 当然,我正在我的 localhost 上测试 Now 环境(运行 now dev)。该应用程序在 Express 上完美运行,因此我希望解决此问题以便在 Now 上正确部署它。

有没有人遇到过这种情况或者可以帮我提些建议?

提前感谢您的支持。

编辑:

我也尝试通过在now.json 中定义路由来强制路径,但结果是一样的。这是我当前的配置:

{
  "public": false,
  "name": "LC",
  "version": 2,
  "routes": [{
    "src": "/(?<lang>[^/]+)",
    "dest": "/?lang=$lang"
  }]
}

编辑 2:

我按照第二指南的建议在pages 目录中切换了所有内容,因为我没有从/api 得到任何信息。尝试仅放置 [lang].js 路由并从 now.json 中删除路由定义。

此时,通过检查req 对象,我收到一个空对象。

【问题讨论】:

    标签: javascript node.js express next.js vercel


    【解决方案1】:

    如果您正在使用像这样localhost:3000/en 的传递语言,那么使用下面的sn-p 来访问它

    req.params.lang
    

    但是如果你传递这样的语言localhost:3000?lang=en

    那就用这个

    req.query.lang
    

    【讨论】:

    • 感谢@iamadeveloper,正如我所提到的,我已经尝试过了,但不幸的是我仍然遇到异常
    • 尝试打印你的请求对象console.dir(req)
    • Zeit.co 文档指出 req.params 不再受其 API 支持。无论如何,尝试同时使用 query/paramsreq 结果为空。
    【解决方案2】:

    由于现在平台更新 - v2 - 我注意到很多 Next API 部分已经改变。通过修改我的代码以遵循新方法,我可以获得以前缺少的参数。 具体来说,我按照latest official documentation上的API路由提示

    感谢大家的帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-11-05
      • 1970-01-01
      • 1970-01-01
      • 2018-02-02
      • 1970-01-01
      • 2014-11-23
      相关资源
      最近更新 更多