簡體   English   中英

語法錯誤:預期的表達式,得到 '<'

[英]SyntaxError: expected expression, got '<'

當我執行以下節點代碼時,我得到了SyntaxError: expected expression, got '<' error in the console

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,它的文件夾結構如下所示

在此處輸入圖像描述

我在這里缺少什么?

這段代碼:

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

告訴 Express 無論瀏覽器請求什么,你的服務器都應該返回index.html 因此,當瀏覽器請求jquery-xyzmain.jsangular.min.js等 JavaScript 文件時,您的服務器將返回index.html的內容,該內容以<!DOCTYPE html>開頭,這會導致 JavaScript 錯誤。

您在回調中的代碼應該查看請求以確定要發回哪個文件,和/或您應該對app.all使用不同的路徑模式。 有關詳細信息,請參閱路由指南

試試這個,通常對我有用:

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 中的所有角度文件。

我認為 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 錯誤。

希望這有效!

主要思想是不知何故返回了 HTML 而不是 Javascript。

原因可能是:

  • 錯誤的路徑
  • 資產本身

可能是由於資源預編譯錯誤造成的。 就我而言,由於編碼錯誤,我發現了這個錯誤。

當我打開 application.js 時,我application error Encoding::UndefinedConversionError at /assets/application.js看到application error Encoding::UndefinedConversionError at /assets/application.js

有完整的錯誤回溯,格式為 HTML 而不是 Javasript。

確保資產已成功預編譯。

我有同樣的錯誤。 就我而言

原因服務器上的資源受到限制,服務器正在發送登錄頁面而不是 javascript 頁面。

解決方案:允許用戶訪問資源或完全取消限制。

當您在 html 中放置內聯標記時,您也可能會收到此錯誤消息,但會出現(對我來說很常見)錯誤,即您忘記將斜杠添加到結束腳本標記中,如下所示:

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

JS 解釋器嘗試“執行”標簽,它看起來像一個以小於號開頭的表達式,因此出現錯誤: SyntaxError: expected expression, got '<'

只需簡單地添加:

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

其中'/app'是您的 index.html 或您的 Web '/app'所在的目錄。

當我將 Wordpress 站點遷移到另一台服務器時,我遇到了同樣的錯誤。 我的 js 腳本標題中的 URL 仍然指向舊的服務器和域名。

一旦我更新了域名,錯誤就消失了。

我在使用 Angular js 時遇到了類似的問題。 我在我的 .htaccess 中將所有內容重寫為 index.html。 解決方案是在 . 每種情況都是獨一無二的,但希望這對某人有所幫助。

當您包含路徑錯誤的文件並且服務器在加載文件時出現一些 404 錯誤時,會發生此問題。

這應該對你有用。 如果您使用的是 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'));
});

嘗試通過 ASP.NET Core 訪問角度 SPA 時出現此錯誤。 結果發現環境變量沒有正確加載,並且沒有調用以下行:

app.UseSpaStaticFiles();

在我確保線路被調用后,該應用程序再次開始工作。

我使用經過身份驗證的 ASPNET 應用程序解決了這個問題,方法是將 WebResource.axd 添加為 web.config 上的一個位置,以便為匿名用戶授權

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

我在 Django 上遇到了這種類型的問題,我的問題是忘記在<script>標簽中添加static

例如在我的模板中:

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

我應該像這樣添加static

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

可能這對某人有幫助。 我得到的錯誤是

語法錯誤:預期的表達式,得到“<”

我所做的點擊了 chrome 中的查看源代碼,然后我發現了這個錯誤

注意:未定義變量:第66D:\\Projects\\demo\\ge.php 中的字符串

問題是這段代碼,

$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'].'"},';
    }

這解決了問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM