【问题标题】:Using Angular 1.5 Component router with Express.js将 Angular 1.5 组件路由器与 Express.js 一起使用
【发布时间】:2016-09-18 02:27:52
【问题描述】:

我正在开发一个 Express 应用程序,我想捕获所有路由并将用户重定向到 /public/app/index.html

app.all('/*', function (req, res, next) {
    // Just send the index.html for other files to support HTML5Mode
    res.sendFile('/public/app/index.html', { root: __dirname });
});

但是当我运行服务器时,屏幕上会显示:

================================================== -->

在控制台出现这些错误:

jquery.min.js:1 Uncaught SyntaxError: Unexpected token <
hover.zoom.js:1 Uncaught SyntaxError: Unexpected token <
hover.zoom.conf.js:1 Uncaught SyntaxError: Unexpected token <
allJS.min.js:1 Uncaught SyntaxError: Unexpected token <

有什么想法吗?

【问题讨论】:

  • 你有没有用 Chrome 开发者工具之类的调试工具检查过它?如果我不得不猜测,我会说您的 HTML 页面的这些脚本的 URL 错误,并且它以 HTML 的形式返回错误(当被解释为 JavaScript 时会爆炸)

标签: javascript angularjs node.js express


【解决方案1】:

相关:SyntaxError: expected expression, got '<'

发生的情况是,对于您的应用发出的每个 GET 请求,您都会收到 index.html

您可以通过检查您的 routes 文件中是否请求文件名来解决此问题。

注意:在此示例中。我使用app-root-path 模块来获取特定文件的路径

var appRoot = require('app-root-path');
...
app.get('/*', function(req, res) {
    var filename = req.originalUrl;
    //if it has a dot in its name return the original file
    if (/(\.)/g.test(req.originalUrl)){
        res.sendfile(appRoot + '/public/' + filename);
    }

【讨论】:

  • 在 Chrome 中,打开开发者工具 (ctrl+shift+i) 并转到网络选项卡。然后重新加载您的页面。您应该会看到“jquery.min.js”、“hover.zoom.js”等请求。单击其中一个,单击右侧的“响应”选项卡,我敢打赌您会看到一些 HTML 错误响应。跨度>
  • 是的,你是对的。所有的 CSS 都将使用这个地址 /css/filename.cs 加载。但唯一的问题是这个文件/min/allJS.min.js
  • 您在/min/allJS.min.js 的网络检查器中看到了什么?
猜你喜欢
  • 2016-09-19
  • 1970-01-01
  • 2016-07-23
  • 2016-07-25
  • 2016-08-09
  • 2017-01-14
  • 2017-01-03
  • 1970-01-01
  • 2017-02-18
相关资源
最近更新 更多