und*_*ore 51 javascript node.js express angularjs
我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
})
Run Code Online (Sandbox Code Playgroud)
错误:
我正在使用Angular Js,它的文件夹结构就像波纹管一样

我在这里缺少什么?
T.J*_*der 49
这段代码:
app.all('*', function (req, res) {
res.sendFile(__dirname+'/index.html') /* <= Where my ng-view is located */
})
Run Code Online (Sandbox Code Playgroud)
告诉Express,无论浏览器请求什么,您的服务器都应该返回index.html.因此,当浏览器请求像jquery-x.y.z.main.js或等的JavaScript文件时angular.min.js,您的服务器将返回index.html开头的内容<!DOCTYPE html>,这会导致JavaScript错误.
回调中的代码应该查看请求以确定要发回的文件,和/或您应该使用不同的路径模式app.all.有关详细信息,请参阅路线指南
dev*_*onj 10
试试这个,通常对我有用:
app.set('appPath', 'public');
app.use(express.static(__dirname +'/public'));
app.route('/*')
.get(function(req, res) {
res.sendfile(app.get('appPath') + '/index.html');
});
Run Code Online (Sandbox Code Playgroud)
目录public包含我的index.html,并引用bower_components文件夹中的所有角度文件.
我相信express.static部分正确地提供静态文件(index.html引用的.js和css文件).根据您的代码判断,您可能需要使用此行代替:
app.use(express.static(__dirname));
Run Code Online (Sandbox Code Playgroud)
因为看起来你所有的JS文件,index.html和你的JS服务器文件都在同一个目录中.
我想@TJ Crowder试图说的是使用app.route发送不同于index.html的不同文件,因为只使用index.html会让你的程序只查找.html文件并导致JS错误.
希望这个有效!
主要的想法是以某种方式返回HTML而不是Javascript.
原因可能是:
它可能是由错误的资产预编译引起的.就我而言,由于编码错误,我发现了这个错误.
当我打开我的应用程序时,我看到了
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 -->
Run Code Online (Sandbox Code Playgroud)
JS 解释器尝试“执行”该标记,该标记看起来像一个以小于号开头的表达式,因此出现错误:SyntaxError: expected expression, got '<'
| 归档时间: |
|
| 查看次数: |
169007 次 |
| 最近记录: |