我有一个(外部开发)角应用程序,其中也包括角通用。在这个项目中已经构建了两个不同的目标/ API域(称为api-url-1和api-url-2),我添加了第三个目标/api域(称为new url)。因此,我补充说:
proxy.config.json:
{
"/api-1": {
"target": "https://api-url-1",
"secure": false,
"changeOrigin": true
},
"/api-2": {
"target": "https://api-url-2",
"secure": false,
"changeOrigin": true
},
"/new-api": {
"target": "https://new-api-url",
"secure": false,
"logLevel": "debug",
"pathRewrite": { "^/new-api": ""},
"changeOrigin": true
}
}在universal.interceptor.ts和server.ts中,我添加了与现有API与自定义名称相同的代码行,从而使“localhost:4200/new/xyz”变为“new/xyz”。
当我在浏览器中的localhost上运行带有npm start的run时,这已经起作用了--那里一切都很好。
但是现在我想从它中构建一个Docker映像和容器--在那里,新的API不起作用--其他API也是这样。
我用npm run build:ssr构建了这个项目(也尝试了build:ssr-deploy和baseUrl ./)
Dockerfile
FROM node:14.15.5-alpine3.13
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
COPY package*.json /usr/src/app/
COPY proxy.conf.json /usr/src/app/
COPY ./node_modules /usr/src/app/node_modules
COPY ./dist /usr/src/app/dist
ENV PORT=80
EXPOSE $PORT
CMD [ "npm", "run", "serve:ssr" ]当我构建映像并运行容器时,最初的两个api可以工作,所以当我在浏览器中检查网络时,请求URL使用状态200表示"localhost:1234/api-1/xyz“。
但是对于我添加的API,它写着“localhost:1234/new/abc”,状态404没有找到。当我在一个新的浏览器选项卡中测试请求时,使用的是真正的URL而不是"localhost“,这是有效的,在构建过程中一定是缺少了什么吗?不幸的是,我还没有在文件中找到答案。如果有人有主意,我很高兴,谢谢。
发布于 2021-09-02 08:21:30
我发现了错误:显然我在proxy.conf.json中为新的-api定义了一个"pathRewrite“,但是我忘了在server.ts中添加相同的内容,因为我不知道这两个文件不一起工作。
server.ts更正:
server.use('/api-1', createProxyMiddleware({target: proxyTarget, changeOrigin: true, logLevel: 'info'}));
server.use('/api-2', createProxyMiddleware({target: proxyCmsTarget, changeOrigin: true, logLevel: 'info'}));
server.use('/new-api', createProxyMiddleware({target: proxyTargetGls, changeOrigin: true, logLevel: 'debug', pathRewrite: { '^/new-api': ''}}));https://stackoverflow.com/questions/69009762
复制相似问题