Javascript Node Express服务器深度链接不适用于AngularJS HTML5模式

Javascript Node Express服务器深度链接不适用于AngularJS HTML5模式,javascript,angularjs,node.js,express,server,Javascript,Angularjs,Node.js,Express,Server,更新:我解决了这个问题。看看问题的结尾 我正在处理这个对我来说似乎微不足道的问题,但我非常沮丧,因为我无法解决它: 我使用yeoman Angular生成器构建了一个Angular应用程序。我需要使用Angular的HTML5模式来摆脱标签,请参见下面的app.js。我正在使用node express服务器see server.js来运行使用grunt build构建的应用程序。 根据需要,我在服务器中添加了一个选项,以便在从任何特定路径访问应用程序时重定向到index.html。它适用于一个级

更新:我解决了这个问题。看看问题的结尾

我正在处理这个对我来说似乎微不足道的问题,但我非常沮丧,因为我无法解决它:

我使用yeoman Angular生成器构建了一个Angular应用程序。我需要使用Angular的HTML5模式来摆脱标签,请参见下面的app.js。我正在使用node express服务器see server.js来运行使用grunt build构建的应用程序。 根据需要,我在服务器中添加了一个选项,以便在从任何特定路径访问应用程序时重定向到index.html。它适用于一个级别的路由,即localhost:8080/research,但不适用于两个或两个以上级别,即localhost:8080/research/human。在这种情况下,刷新浏览器时,出现以下错误:

The stylesheet http://localhost:8080/research/styles/vendor.8089f103.css was not loaded because its MIME type, "text/html", is not "text/css". human
The stylesheet http://localhost:8080/research/styles/main.e7eff4cf.css was not loaded because its MIME type, "text/html", is not "text/css". human
SyntaxError: expected expression, got '<' vendor.01f538ae.js:1:0
SyntaxError: expected expression, got '<'
server.js

更新:解决方案


多亏了用户的评论,我以不同的方式提出了这个问题,并找到了解决方案。也就是说,标签必须放在标签之前,我为这样一件愚蠢的事情付出了多么艰难的代价

为什么不在这样的角度布线中使用嵌套布线


我希望这只是一个评论,但我还不能,你有没有试过把html5模式放在你的路线下面

如果不需要,可以删除if语句

.when('/research/fly', {
        templateUrl: 'views/research-fly.html',
        controller: 'ResearchController'
      })
      .otherwise ({
        templateUrl: 'views/notyetready.html',
      }); 

        if(window.history && window.history.pushState){

         $locationProvider.html5Mode(true);
        }
});

也许可以尝试使用不同的模式来匹配,这听起来像是问题的原因

app.all('/**/*', function(req, res, next)
但是,我想问,为什么要使用node+express提供静态文件?如果您只需要一个用于本地开发的静态文件服务器,为什么不试试呢


然后,如果您想在服务器上提供静态文件,您可以在html5模式下使用angular,这非常好

谢谢您的建议。这是我将来一定要考虑的事情。但是我在这里展示的代码是一个来自大型应用程序的小例子,我更喜欢避免重构整个程序。所以节点问题有什么解决方案吗?再次非常感谢!谢谢@royka,我以前试过这种模式,但仍然不起作用。事情不可能那么复杂。对于本地开发,我使用grunt服务,这与HTML5模式有相同的问题。令人沮丧的是,我不能让它工作。这应该很容易。无论如何,我会尝试一下nginx谢谢!,但是为什么不使用node express???你的index.html看起来像什么?具体来说,currentDir+/dist产生了什么?这是你所期望的吗?谢谢@royka-你让我用不同的方式问这个问题,我找到了答案。解决办法是。我只是按照建议移动了标签的位置。。。答对 了它起作用了!
.when('/research/fly', {
        templateUrl: 'views/research-fly.html',
        controller: 'ResearchController'
      })
      .otherwise ({
        templateUrl: 'views/notyetready.html',
      }); 

        if(window.history && window.history.pushState){

         $locationProvider.html5Mode(true);
        }
});
app.all('/**/*', function(req, res, next)