语法错误:预期的表达式,得到 '<'

Posted

技术标签:

【中文标题】语法错误:预期的表达式,得到 \'<\'【英文标题】:SyntaxError: expected expression, got '<'语法错误:预期的表达式,得到 '<' 【发布时间】:2021-08-30 18:11:43 【问题描述】:

当我执行以下节点代码时,控制台中出现SyntaxError: expected expression, got '&lt;' 错误

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.jsangular.min.js 之类的 javascript 文件时,您的服务器会返回以 &lt;!DOCTYPE html&gt; 开头的 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 '&lt;'

【讨论】:

你也错过了开始标签中的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 添加到 &lt;script&gt; 标记中。

比如在我的模板中:

<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.php66

问题在于这段代码的 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 但得到“)”

语法错误:。或表达式1错误编译失败后预期的运算符

GraphQL - 语法错误:预期“:”,找到“)”[关闭]

语法错误第 0 行,第 84 列:错误:预期的字符串结尾,得到 'f9f03b9a61c46db91ed492c862a3083'