如何使用快速路由器使angular2路由工作?

时间:2017-04-23 17:21:50

标签: angular express heroku angular2-routing

我试图在同一台服务器上使用angular2应用程序托管我的快速休息服务。 阅读不同的相关帖子后,我发现各种解决方案都在本地服务器 http://localhost:3000 上工作但是当我在Heroku上托管我的应用程序时,我尝试访问我的快速路线以/ api / ...开头运作良好。但无法访问angular2 UI页面,它开始在页面上显示Not Found消息。

app.all('*', (req, res) => {
  console.log(`[TRACE] Server 404 request: ${req.originalUrl}`);
  res.sendFile(path.join(__dirname, 'dist/index.html'));
});

app.use(function(req, res, next) {
  res.sendFile(path.join(__dirname, 'dist/index.html'));
});

app.get('/*', function (req, res) {
    res.sendFile(path.join(__dirname, 'dist/index.html'));
});

app.get(/^\/([^a]|a[^p]|ap[^i]|api[^/]).*$/,(req,res) => {
    res.sendFile(path.join(__dirname, 'dist/index.html'));
});

1 个答案:

答案 0 :(得分:1)

当我在托管服务器上部署我的应用程序时,我发现dist目录没有部署在包含运行 ng build --prod 之后创建的Angular app build的服务器上。

首先,我手动将其上传到托管服务器,我的应用程序开始正常运行。然后它出现在我的脑海中,每次都是一个手动任务,所以我找到了两个解决这个问题的方法。

  1. 首先,从.gitignore文件中删除/ dist条目,这意味着当我将应用程序推送到任何托管服务器时,它不会忽略dist目录。
  2. 其次,我从此链接 https://docs.npmjs.com/misc/scripts 中读取了package.json文档,并了解了预安装和安装后脚本,并更新了我的package.json文件以获得以下脚本。< / p>

    "scripts": {
       "ng": "ng",
       "start": "node index.js",
       "build": "ng build",
       "test": "ng test",
       "lint": "ng lint",
       "e2e": "ng e2e",
       "postinstall": "ng build --prod"
    },
    
  3. 阅读本文以便在heroku https://paucls.wordpress.com/2016/11/25/deploy-angular-2-cli-app-to-heroku/

    上进行部署