[英]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.js
或angular.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 中的查看源代碼,然后我發現了這個錯誤
注意:未定義變量:第66行D:\\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.