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.js
或angular.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')); });