【问题标题】:How do I force Angular2 to return JS instead of HTML?如何强制 Angular2 返回 JS 而不是 HTML?
【发布时间】:2018-05-17 03:38:31
【问题描述】:

我有一个快速应用程序调用 Angular2 应用程序。我一直收到 Error: (SystemJS) Unexpected token

我发现 app.module.js 返回的是 html 而不是 .js,这是导致代码丢失的原因吗?

Error: (SystemJS) Unexpected token <

详细错误是:

dashboard:21 Error: (SystemJS) Unexpected token <
    SyntaxError: Unexpected token <
        at eval (<anonymous>)
        at Object.eval (http://localhost:3000/main.js:3:20)
        at eval (http://localhost:3000/main.js:8:4)
        at eval (http://localhost:3000/main.js:9:3)
    Evaluating http://localhost:3000/app/app.module.js
    Evaluating http://localhost:3000/main.js
    Error loading http://localhost:3000/main.js
        at eval (<anonymous>)
        at Object.eval (http://localhost:3000/main.js:3:20)
        at eval (http://localhost:3000/main.js:8:4)
        at eval (http://localhost:3000/main.js:9:3)
    Evaluating http://localhost:3000/app/app.module.js
    Evaluating http://localhost:3000/main.js
    Error loading http://localhost:3000/main.js

这是它作为网络开发工具的快照:

这就是我的快递的样子:

app.use('/styles.css', express.static(path.join(__dirname, '../angular/src/styles.css')));
app.use('/systemjs.config.js', express.static(path.join(__dirname, '../angular/src/systemjs.config.js')));
app.use('/systemjs-angular-loader.js', express.static(path.join(__dirname, '../angular/src/systemjs-angular-loader.js')));
app.use('/systemjs.config.extras.js', express.static(path.join(__dirname, '../angular/src/systemjs.config.extras.js')));
app.use('/main.js.map', express.static(path.join(__dirname, '../angular/src/main.js.map')));

app.use('/main.js', express.static(path.join(__dirname, '../angular/src/main.js')));
app.use(express.static(path.join(__dirname, '../angular')));
app.use('/api/', auditlog);
app.get('*', (req, res) => {
  res.sendFile(path.join(__dirname, '../angular/src/index.html'));
});

【问题讨论】:

  • app.module.js 不太可能返回 HTML。这很可能是以下两种情况之一:要么您的路由器没有路由您的请求并退回到发送index.html,要么您的 API 返回 HTML 而不是 JSON。
  • 嗨兰迪,我认为你是对的。我的快递应用程序是否需要知道哪些路线要发送到 Angular?最后一行 app.get('*')... 是否不足以指示查询从 Angular 返回正确的组件?
  • @RandyCasburn 而不是 JSON**
  • @MotassemMK - 我们现在真的是在拼词吗?见:dictionary.com/browse/in--lieu--of
  • @RustySchmidt - 请分享您使用的 URL,并希望从您的 Express 服务器获取 JSON。

标签: javascript angular express systemjs


【解决方案1】:

您的 express 应用程序设置为为任何请求提供 index.html,因此当您通常会收到 404 时,您会取回该文件。鉴于错误,我猜您可能缺少 JS文件,或者可能缺少一些 SystemJS 模块映射。您可以使用网络检查器通过查看请求的预览选项卡来查找丢失的文件。

由于它的路由,使用所有路由对 Angular 来说很方便,但在返回应用程序之前检查客户端是否请求 text/html 可能会有所帮助,如果不是则返回 404 - 这将更容易识别丢失的 JS 文件在客户端。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-08
    • 2012-03-20
    • 1970-01-01
    • 1970-01-01
    • 2017-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多