语法错误:预期的表达式,得到 '<'
Posted
技术标签:
【中文标题】语法错误:预期的表达式,得到 \'<\'【英文标题】:SyntaxError: expected expression, got '<'语法错误:预期的表达式,得到 '<' 【发布时间】:2021-08-30 18:11:43 【问题描述】:当我执行以下节点代码时,控制台中出现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,它的文件夹结构如下所示
我在这里缺少什么?
【问题讨论】:
【参考方案1】:这段代码:
app.all('*', function (req, res)
res.sendFile(__dirname+'/index.html') /* <= Where my ng-view is located */
)
告诉 Express 无论浏览器请求什么,你的服务器都应该返回index.html
。因此,当浏览器请求 jquery-x.y.z.main.js
或 angular.min.js
之类的 javascript 文件时,您的服务器会返回以 <!DOCTYPE html>
开头的 index.html
的内容,这会导致 JavaScript 错误。
您在回调中的代码应该查看请求以确定要发回的文件,和/或您应该使用 app.all
的不同路径模式。详情请见routing guide。
【讨论】:
那么,获取 index.html 文件的理想方法是什么? @underscore:我刚刚添加了路由指南的链接,详细描述了如何注册路由。 @underscore:对于服务器的“主页”(所以,可能是您的index.html
),是的。然后,您将需要另一个路由来提供 .js 和其他文件(CSS、/
以外的页面等)。同样,路线指南有详细信息。
很好的解释。【参考方案2】:
当我将 Wordpress 网站迁移到另一台服务器时,我遇到了同样的错误。 我的 js 脚本标头中的 URL 仍然指向旧的服务器和域名。
一旦我更新了域名,错误就消失了。
【讨论】:
【参考方案3】:试试这个,通常对我有用:
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 服务器文件似乎都在同一个目录中。
我认为@T.J. Crowder 想说的是使用 app.route 发送 index.html 以外的不同文件,因为仅使用 index.html 会让您的程序仅查找 .html 文件并导致 JS 错误。
希望这行得通!
【讨论】:
【参考方案4】:我在使用 Angular js 时遇到了类似的问题。我在 .htaccess 中对 index.html 进行了全部重写。 解决方案是在 . 每种情况都是独一无二的,但希望这对某人有所帮助。
【讨论】:
【参考方案5】:当您包含路径错误的文件并且服务器在加载文件时出现一些 404 错误时,会出现此问题。
【讨论】:
【参考方案6】:我有同样的错误。就我而言
原因:服务器上的资源受到限制,服务器发送的是登录页面而不是 javascript 页面。
解决方案:授予用户资源访问权限或完全取消限制。
【讨论】:
【参考方案7】:主要思想是返回了 HTML 而不是 Javascript。
原因可能是:
错误的路径 资产自己这可能是由错误的资产预编译引起的。就我而言,由于编码错误,我发现了这个错误。
当我打开我的 application.js 时,我看到了
application error Encoding::UndefinedConversionError at /assets/application.js
错误的完整回溯格式为 HTML 而不是 Javasript。
确保资产已成功预编译。
【讨论】:
感谢错误路径的提示!当我改变时,错误就消失了,例如 到 :) @nerdess,不客气。我给出了这个答案,因为它发生了接受的答案对我没有帮助【参考方案8】:当您在 html 中放置内联标记时,您也可能会收到此错误消息,但会出现(对我来说很常见)错字,即您忘记在结束脚本标记中添加斜杠,如下所示:
<script>
alert("I ran!");
<script> <!-- OOPS opened script tag again instead of closing it -->
JS 解释器试图“执行”标签,它看起来像一个以小于号开头的表达式,因此错误:SyntaxError: expected expression, got '<'
【讨论】:
你也错过了开始标签中的T 已修复!谢谢 Sixtoo :-)【参考方案9】:我使用经过身份验证的 ASPNET 应用程序解决了这个问题,方法是将 WebResource.axd 添加为 web.config 上的一个位置,这样它就可以授权给匿名用户
<location path="WebResource.axd">
<system.web>
<authorization>
<allow users="?"/>
</authorization>
</system.web>
</location>
【讨论】:
【参考方案10】:只需添加:
app.use(express.static(__dirname +'/app'));
其中'/app'
是您的 index.html 或您的 Webapp 所在的目录。
【讨论】:
这会被添加到什么文件中? 这将被添加到从启动脚本调用的主 js 文件中,您可以在 package.json "scripts" -> "start" 或类似文件中找到相同的内容【参考方案11】:我在 Django 上遇到了这种类型的问题,我的问题是忘记将 static
添加到 <script>
标记中。
比如在我的模板中:
<script type="text/javascript" src="css/layer.js"></script>
我应该像这样添加static
:
<script type="text/javascript" src="% static 'css/layer.js' %" ></script>
【讨论】:
【参考方案12】:这应该适合你。如果您正在使用 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'));
);
【讨论】:
【参考方案13】:这可能对某人有帮助。我得到的错误是
SyntaxError: 预期的表达式,得到 '
我在 chrome 中点击查看源代码后发现了这个错误
注意:未定义变量:string in D:\Projects\demo\ge.php 第 66 行
问题在于这段代码的 sn-p,
$string= ''; <---- this should be declared outside the loop
while($row = mysql_fetch_assoc($result))
$string .= ' id:'.$row['menu_id'].', pId:'.$row['parent_id'].', name:"'.$row['menu_name'].'",';
解决了问题。
【讨论】:
以上是关于语法错误:预期的表达式,得到 '<'的主要内容,如果未能解决你的问题,请参考以下文章
如何修复渲染 SLS 失败:Jinja 语法错误:预期令牌',',得到':'?
BigQuery API:400 语法错误:预期关键字 JOIN 但得到“)”
GraphQL - 语法错误:预期“:”,找到“)”[关闭]
语法错误第 0 行,第 84 列:错误:预期的字符串结尾,得到 'f9f03b9a61c46db91ed492c862a3083'