Angular App中的语法错误:意外的标记<

我有一个在我的本地和生产环境中完美运行的Angular应用程序。在我做了一个小改动后,我在本地运行了该应用程序并且它工作正常。然后我构建了该项目并将dist文件夹复制到了Web服务器。 问题是当我尝试访问应用程序时,我在Chrome Inspector中收到以下错误:

Uncaught SyntaxError: Unexpected token < inline.1a152b6….bundle.js:1
Uncaught SyntaxError: Unexpected token < polyfills.1553fdd….bundle.js:1
Uncaught SyntaxError: Unexpected token < vendor.94d0113….bundle.js:1
Uncaught SyntaxError: Unexpected token < main.d6f56a1….bundle.js:1

所以,它似乎是一个错位的人物,但在我的本地环境中,应用程序工作正常,我没有在控制台上收到任何警告或错误信息。


这很可能是404页面或重定向到服务于常规html而不是预期JavaScript文件的页面的结果。 (HTML页面以<html><!DOCTYPE...>开头)确保您已正确上传文件并正确访问页面。 您可以通过使用浏览器手动访问URL来验证,或者查看浏览器开发工具的网络选项卡来检查响应。


这取决于您正在使用的服务器。 例如在Apache中,您可以将.htaccess文件设置为驱动器上的相对路径,您的应用程序位于RewriteBase 。 相应地设置<base href=""> 。 使用节点, app.use(express.static(__dirname + '/dist')); 应该在app.get之前...检查并确认构建没有错误,并且所有文件都被复制到dist。


我遇到过同样的问题:

  • 我运行命令ng build --aot --prod
  • 一切编译没有错误
  • 我删除了服务器上的所有文件,并通过FTP(FileZilla)将其全部复制到Windows Azure服务器
  • 有时我会收到错误“Unexpected token <”,而其他时间则不会
  • 昨天我注意到主服务器上没有[hash] .js文件,而且Filezilla没有给我一个复制它的错误。然后我试着只复制那个文件。它没有工作。 当我从文件名中删除散列部分时,它没有问题地复制。

    工作一圆

    运行: ng build --aot --prod --output-hashing none

    每次都有效。

    因此,Filezilla或Windows Server不允许具有特定长度的文件名,或者它不喜欢某些哈希值。

    链接地址: http://www.djcxy.com/p/96843.html

    上一篇: Syntax Error in Angular App: Unexpected token <

    下一篇: How to update javascript array if item exists in that index position?