如何强制Angular2返回JS而不是HTML?

时间:2018-05-15 17:49:30

标签: javascript angular express systemjs

我有一个快速应用程序调用Angular2应用程序。我一直得到错误:(SystemJS)意外的令牌<并且搜索了一下让我发现这通常是由于返回了错误的内容类型。

我发现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

以下是它作为网络开发工具的快照: enter image description here

这就是我的快递:

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'));
});

1 个答案:

答案 0 :(得分:0)

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

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