现在 2 迁移的问题



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

localhost:3000/en

然后,我必须按预期得到家。但是我收到此异常:

TypeError: 无法读取 Function.getInitialProps 中未定义的属性 'lang' (/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 中,我在路径([lang].js段(中实现了/api内容:

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对象,我收到一个空对象。

如果您像这样使用传递 langlocalhost:3000/en那么请使用下面的代码片段来访问这个

req.params.lang

但是如果你像这样传递朗localhost:3000?lang=en

然后使用这个

req.query.lang

由于现在平台更新 - v2 - 我注意到很多 Next API 部分都发生了变化。通过修改我的代码以遵循新方法,我能够获得以前缺少的参数。 详细地,我遵循了最新官方文档中的 API 路由提示

谢谢大家的帮助。

相关内容

  • 没有找到相关文章

最新更新