SyntaxError:预期expression式,得到'<'

我得到了SyntaxError: expected expression, got '<'当我执行下面的节点代码时,在控制台中SyntaxError: expected expression, got '<'错误

 var express = require('express'); var app = express(); app.all('*', function (req, res) { res.sendFile(__dirname+'/index.html') /* <= Where my ng-view is located */ }) var server = app.listen(3000, function () { var host = server.address().address var port = server.address().port }) 

错误: 在这里输入图像说明

我正在使用Angular Js,它的文件夹结构像波纹pipe

在这里输入图像说明

我在这里错过了什么?

此代码:

 app.all('*', function (req, res) { res.sendFile(__dirname+'/index.html') /* <= Where my ng-view is located */ }) 

告诉Express,无论浏览器请求什么,你的服务器应该返回index.html 。 因此,当浏览器请求JavaScript文件(如jquery-xyzmain.jsangular.min.js ,您的服务器将返回index.html的内容,该内容以<!DOCTYPE html>开头,这会导致JavaScript错误。

你的callback里面的代码应该是查看请求来确定哪个文件要发回,和/或你应该使用app.all使用不同的path模式。 详细信息请参见路由指南 。

试试这个,通常适用于我:

 app.set('appPath', 'public'); app.use(express.static(__dirname +'/public')); app.route('/*') .get(function(req, res) { res.sendfile(app.get('appPath') + '/index.html'); }); 

目录public包含我的index.html并引用文件夹bower_components中的所有angular文件。

我相信express.static部分正确地提供了静态文件(如index.html所引用的.js和css文件)。 根据你的代码判断,你可能需要使用这行代码:

 app.use(express.static(__dirname)); 

因为看起来你所有的JS文件,index.html和你的JS服务器文件都在同一个目录下。

我觉得@TJ Crowder想说的是用app.route发送除index.html之外的其他文件,因为只是使用index.html,你的程序只会寻找.html文件并导致JS错误。

希望这个作品!

我有同样的错误。 在我的情况

原因在服务器和服务器上的资源有限的,而不是发送login页面的JavaScript页面。

解决scheme :为用户提供资源访问权限或解除限制。

主要的想法是,不知何故HTML已被返回,而不是Javascript。

原因可能是:

  • 错误的path
  • 资产本身

这可能是由错误的资产预编译引起的。 就我而言,由于编码错误,我发现了这个错误。

当我打开我的application.js我看到application error Encoding::UndefinedConversionError at /assets/application.js

有格式化为HTML而不是Javasript的完全回溯。

确保资产已成功预编译。

当你在html中放置一个内联标签时,你也可以得到这个错误信息,但是对于(我常见的)错字,忘记把斜线添加到闭幕脚本标签中是这样的:

 <script> alert("I ran!"); <script> <!-- OOPS opened script tag again instead of closing it --> 

JS解释器试图“执行”标签,它看起来像一个以小于号开头的expression式,因此出现如下错误: SyntaxError: expected expression, got '<'

当我将Wordpress网站迁移到另一台服务器时,我遇到了同样的错误。 我的js脚本标题中的URL仍然指向旧的服务器和域名。

一旦我更新了域名,错误就消失了。

我有一个类似的问题,使用Angular js。 我有一个重写所有index.html在我的.htaccess。 解决的办法是添加正确的path斜杠。 每种情况都是独一无二的,但是希望这可以帮助别人

当您的文件包含错误的path,并且服务器在加载文件时出现一些404错误时,会发生此问题。

我通过将WebResource.axd作为web.config中的一个位置添加到已授权的ASPNET应用程序来解决此问题,以便授权给匿名用户

 <location path="WebResource.axd"> <system.web> <authorization> <allow users="?"/> </authorization> </system.web> </location> 

只需简单地添加:

 app.use(express.static(__dirname +'/app')); 

其中'/app'是index.html所在的目录或Web '/app'

我在Django上得到这个types的问题,我的问题是忘记添加static<script>标签。

比如在我的模板里:

 <script type="text/javascript" src="css/layer.js"></script> 

我应该像这样添加static

 <script type="text/javascript" src="{% static 'css/layer.js' %}" ></script> 

这应该适合你。 如果你正在使用SPA。

 app.use('/', express.static(path.join(__dirname, 'your folder'))); // Send all other requests to the SPA app.get('*', (req, res) => { res.sendFile(path.join(__dirname, 'your folder/index.html')); });