NextJS 和获取拦截器随机工作
NextJS and fetch interceptor working randomly
我正在尝试将我对 /v1/* 的所有请求修改为 https://api.treedis.com/v1/*。现在使用 fetch-intercept 和这段代码效果很好:
fetchIntercept.register({
request(url, _config) {
const config = _config;
const myHeaders = new Headers();
if (!config.headers || !config.headers["Content-Type"]) {
myHeaders.append("Accept", "application/json");
myHeaders.append("Content-Type", "application/json");
}
let finalUrl = null;
if (url.indexOf("http") === -1) {
const domain = process.env.REACT_APP_DOMAIN || "http://localhost:5030";
finalUrl = `${domain}/${url}`;
} else {
finalUrl = url;
}
config.headers = myHeaders;
return [finalUrl, config];
},
})
process.env.REACT_APP_DOMAIN
设置为 api.treedis.com。
此文件正在导入 _app.js
import App from "next/app";
import Head from "next/head";
import "../_helpers/auth-header";
class MyApp extends App {
render = () => {
const { Component, pageProps } = this.props;
return (
<>
<Head />
<Component {...pageProps} />
</>
);
};
}
export default MyApp;
现在,当我转到 https://my.bc2e.com/tour/appartement-de-4-pieces-paris-5eme(我的 NextJS 应用程序)时,它会尝试转到 v1/public/getTour。在我的浏览器上它运行完美,但在我的客户端上它显示如下:
所以抓取拦截对他不起作用。当他清理缓存时,它会工作并且拦截器会启动,但在几次刷新后它会停止工作。
所以这很随机。有时拦截器会工作并添加 process.env.REACT_APP_DOMAIN
,但有时不会。我不知道为什么。
有什么想法吗?
此 NextJS 应用托管在 CloudFront 上,由 Lambda@Edge 执行路由。
为了解决这个问题,我用 axios 替换了 fetch。我知道这不是真正的解决方案,但它解决了这个问题。我不知道到底是什么原因造成的。
我正在尝试将我对 /v1/* 的所有请求修改为 https://api.treedis.com/v1/*。现在使用 fetch-intercept 和这段代码效果很好:
fetchIntercept.register({
request(url, _config) {
const config = _config;
const myHeaders = new Headers();
if (!config.headers || !config.headers["Content-Type"]) {
myHeaders.append("Accept", "application/json");
myHeaders.append("Content-Type", "application/json");
}
let finalUrl = null;
if (url.indexOf("http") === -1) {
const domain = process.env.REACT_APP_DOMAIN || "http://localhost:5030";
finalUrl = `${domain}/${url}`;
} else {
finalUrl = url;
}
config.headers = myHeaders;
return [finalUrl, config];
},
})
process.env.REACT_APP_DOMAIN
设置为 api.treedis.com。
此文件正在导入 _app.js
import App from "next/app";
import Head from "next/head";
import "../_helpers/auth-header";
class MyApp extends App {
render = () => {
const { Component, pageProps } = this.props;
return (
<>
<Head />
<Component {...pageProps} />
</>
);
};
}
export default MyApp;
现在,当我转到 https://my.bc2e.com/tour/appartement-de-4-pieces-paris-5eme(我的 NextJS 应用程序)时,它会尝试转到 v1/public/getTour。在我的浏览器上它运行完美,但在我的客户端上它显示如下:
所以抓取拦截对他不起作用。当他清理缓存时,它会工作并且拦截器会启动,但在几次刷新后它会停止工作。
所以这很随机。有时拦截器会工作并添加 process.env.REACT_APP_DOMAIN
,但有时不会。我不知道为什么。
有什么想法吗?
此 NextJS 应用托管在 CloudFront 上,由 Lambda@Edge 执行路由。
为了解决这个问题,我用 axios 替换了 fetch。我知道这不是真正的解决方案,但它解决了这个问题。我不知道到底是什么原因造成的。