【发布时间】:2018-04-19 00:06:53
【问题描述】:
问题描述
我有一个使用 CLI 组合在一起的 Angular 应用程序,并成功部署到 azure semi。不幸的是,当我导航到我的网站时,浏览器中不尊重路线。基本上,一旦您到达该站点,该路线在浏览器中就是静态的。但仅当部署到天蓝色时。在本地,一切正常。
简单的演练
例如:
假设我们从 - http://my-awesome.site/开始
该路由将加载,它将正常运行。
然后我们点击一个链接,将我们带到http://my-awesome.site/route-here
这行得通,它带我去那条路。除非我查看浏览器窗口,它仍然显示:
另外,如果我从http://my-awesome.site/route-here 开始,浏览器将反映正确的路线。直到您导航到任何其他路线。基本上,您用于访问我的网站的路线在浏览器中是静态的,我无法更改它。
是什么让我夜不能寐
在本地,一切正常。
localhost:4200/ 有效,点击 localhost:4200/some-route 有效,浏览器更新并反映 localhost:4200/some-route 的新 url
有用的信息
我通过 VSTS 部署到 Azure。我不完全确定引擎盖下发生了什么。老实说,我是部署 Angular 的新手,我真的在“Node.js 体验”中输入了“否”。我最近被告知我的 Windows 应用程序服务器正在运行 IIS 伪装成节点,这让我大吃一惊。
徒劳地尝试以不同的方式解决问题
所以,我建立了一个 Linux 应用服务器并创建了一个 linux 构建服务器,并添加了一个服务器文件夹,其中包含一个 index.js 和 package.json 以及从 John Papa 的 github 借来的代码
index.js
const express = require('express');
const app = express();
const port = process.env.PORT || 4200;
const publicweb = process.env.PUBLICWEB || './dist';
app.use(express.static(publicweb));
console.log(`serving \\${publicweb}`);
app.get('*', (req, res) => {
tres.sendFile(`index.html`, { root: publicweb });
});
app.listen(port, () => console.log(`listening on http://localhost:4200`));
package.json
{
"name": "one-with-angular",
"version": "0.0.0",
"license": "MIT",
"scripts": {
"start": "node index.js"
},
"private": true,
"dependencies": {
"body-parser": "^1.17.2",
"express": "^4.15.3"
},
"devDependencies": {}
}
然后我按照在
找到的教程进行操作成功部署我的网站。
除了那是一堆失败
当我将它部署到我原来的 windows azure 服务器时,路由仍然没有受到尊重。额外的好处是,如果你带着去任何地方的路线进来,你就输了。你得到了一个完整的 404。因为原因。好吧,坦率地说,这就是我在这里的部分原因。
Linux 也不是我成功的关键
不,不,不是。我之前提到过那个 Linux 机器。我完全尝试配置 VSTS 构建以部署在那里。它确实“成功”地部署在那里。我可以从该服务器获得 503 或 404,但我没有得到任何其他信息。
我想要什么
一些方向。
也许我错过了配置文件中的一个设置,它类似于名为“LetAngularRespectRoutesInTheBrowserWhenNotOnLocalhost”的应用程序设置
或
也许我在那个简单的 index.js 文件中遗漏了一些东西
或
也许 Linux 实际上是关键,我需要弄清楚那个版本有什么问题。
最后
谢谢
【问题讨论】:
-
尝试将构建工件下载到您的本地机器并运行它以检查它是否有效?你能用一个新项目重现这个问题吗?如果可以,能否在 OneDrive 上分享示例项目?
-
hrmmmm...如果我构建它,我发布的 dist 文件夹如下所示:1drv.ms/u/s!AhwizZ0b-OWciEhL-S0Bi8gqrgvT
-
我可以确认,如果我在本地提供该服务(运行“http-server ./”),它会正确路由并正确反映浏览器中的路由。
-
你的意思是你下载发布的文件(你共享的)并在本地运行它,它工作正常吗?你如何运行这个应用程序?
-
我使用 http-server 运行它。是的,这就是我的意思。而且,我能够找到问题的解决方案,我会看看我是否无法在下面概述它。
标签: node.js angular azure azure-devops url-redirection