当前位置: 首页 > 知识库问答 >
问题:

MERN堆栈—作为节点endpoint的链路在生产中不起作用

朱浩大
2023-03-14

React.js:我有一个谷歌登录按钮,看起来像这样

const GoogleButton = () => (
<a href='/auth/google' >
    <div className='google-icon-wrapper'>
        <img className='google-icon' src= {googleLogo} alt='Google logo'/>    
    </div>
    <p className ='google-btn-text'>
        Sign in with google
    </p>
</a>

)

React.js(超文本传输协议-proxy-middleware)在开发模式下,我也有代理设置。

const proxy = require("http-proxy-middleware");
module.exports = function(app) {
  app.use(proxy("/auth/", { target: "http://localhost:5000/" }));
  app.use(proxy("/api/", { target: "http://localhost:5000/" }));
};

Node.js:我有这个endpoint,但是它不能在生产环境中工作,因为代理不能在生产环境中工作

app.get('/auth/google', passport.authenticate('google', {
  scope: SCOPE,
  access_type: 'offline',
})

);

**当我点击生产上的按钮时,react会将我发送到页面,例如:www.example。com/auth/google-但必须调用节点endpoint**,但当我发出提取请求时,节点endpoint会工作,例如,如果我这样做:fetch('/api/google'),它会工作。。

更新:问题出在ReactserviceWorker.js-PWA……它缓存了结果和链接……我不确定……

共有1个答案

江承嗣
2023-03-14

如果您将< code > http://localhost:5000/显式标识为prod for node.js上的主机和端口,这可能会很棘手。有些平台,比如< code>heroku会自动绑定端口,所以你不知道到底是哪个端口。尝试为从< code>env获取的< code>HOST使用env变量,并尝试绑定类似< code > http://localhost:$ { HOST }/的代理

 类似资料:
  • 我正试图用服务栈实现Swagger。我已经用nuget安装了带有swagger的服务栈。当前的DLL版本大多报告为3.9.56.0。 我正在努力遵循…https://github.com/ServiceStack/ServiceStack.UseCases/tree/master/SwaggerHelloWorld提供的例子 这个指令看起来相当简单... 在我通过nuget安装后(按照文档说明),

  • 下面是我MERN项目的文件结构。 客户端文件夹包含反应服务器。客户端在<code>localhost.Client上运行。comServer文件夹包含节点的代码。js服务器。服务器运行于 每当我从客户端向服务器发出请求时。如何缓解 csrf 攻击?确保向服务器发出的请求来自客户端,而不是来自任何其他源。

  • 节目视图:截图 这是一个MERN项目: 我正在开发一个web应用程序,可以对公司模型进行用户CRUD操作。 我已经执行了Get-Add-Delete操作,但我对更新操作感到困惑。 我想使用我的CompanyModal(它是一个用于添加公司的引导模式)组件模式来编辑公司。 你能给点提示或建议做这件事吗?其实我脑子一片空白。

  • 我刚刚安装了node.js,还在环境变量中设置了PATH。路径值为 短期内 android命令正常工作。

  • 我正在遵循本指南,并在“是否需要运行此代码”一节中发言: 但我得到了这个错误: nodemon:术语'nodemon'不能识别为cmdlet、函数、 脚本文件或可操作程序的名称。检查名称的拼写,或者如果包含路径 ,请验证路径是否正确,然后重试。行:1 char:1+nodemon server+~~~~~~~~+CategoryInfo:objectNotfound:(nodemon:string

  • 我还是Selenium测试世界的新手,目前正在使用SeleniumChromeWebDriver进行测试。 我想做的是在下面的弹出对话框中: < li >在文本输入框中输入一个数字 < li >单击应用按钮 < li >然后将触发web应用程序向服务器端发布信息。 这是我到目前为止发现的,如果我取消对<code>线程的注释。睡眠(500),一切都将完美工作。但是没有<code>线程。sleep(5