节点 URL 将“未定义”添加到 URL 路径

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

我有一个位于开发、登台和生产服务器上的站点。在开发和登台服务器上,功能 100% 正常,但是在生产服务器上,最奇怪的事情发生了——“未定义”被添加到 URL 路径中。

这是正在发生的事情的简短示例:

在index.html 中,我有一个锚标记用于使用护照注销会话:

<a href="auth/logout">Logout</a>

它会转到我的节点服务器上的这条路由:

// passport oauth logout
routes.get('/auth/logout', (req, res) => {
  req.session.destroy((e) => {
    req.logout();
    res.redirect(config.redirects.env.prod);
  });
});

在开发和登台时,这会破坏会话并将您重定向到

/
。在生产中,当您单击按钮时,它会随机转到此 URL
https://somesite.com/auth/undefined

关于如何调试这个有什么想法吗?这对我来说毫无意义,而且我在服务器端或标记中没有找到任何会导致这种情况的东西,特别是因为它在开发和登台上起作用。所有服务器都是 Ubuntu 服务器,设置方式完全相同。

javascript html node.js routes
2个回答
0
投票

我能够解决这个问题。奇怪的是,在用于文件上传的完全不相关的路线中的 400 行下面,我有一行代码引用了

config.redirects.env.production
而不是
config.redirects.env.prod
。我什至没有查看该路线,因为它甚至不是我目前正在测试的功能的一部分,并且我没有看到任何错误(同样,因为该路线尚未被引用/使用)。

修复该拼写错误解决了在 URL 中插入“未定义”的奇怪问题。仍然不确定它是如何成功地冒出这样的。


0
投票

FWIW 我正在使用 Render.com,但遇到了这个问题。

具体来说,似乎“未定义”被插入到我的路径中。

结果我使用了一个未正确加载的 process.env 变量。目前尚不清楚 Next.JS 是否能与 Render.com 配合良好。现在,我通过将 .env.Production 文件提交到我的存储库来解决该问题。

© www.soinside.com 2019 - 2024. All rights reserved.