Node.js/jade语法错误:unexpected token;
Node.js/jade syntax error: unexpected token ;
我正在尝试学习node.js。我正在完成OReilly书中的一个示例"使用mongodb和backbone构建节点应用程序"。我遇到了一个错误,我还没能解决它。
我找了一段时间这个错误(在我自己的代码版本中)。大多数类似的情况都与jade解析注释有关(我在这里没有使用)。看起来另一种可能性是模块版本与此代码或彼此不兼容,但我不准备深入研究这个问题。我完全从示例中复制了代码,而不是使用我自己的版本,并且我得到了相同的结果。
痕迹指向玉模板中的一行,但我不确定问题真正在哪里。
下面是示例.js文件中的代码:
var http = require('http');
var express = require('express');
var app = express();
var server = http.createServer(app);
var io = require('socket.io').listen(server);
var catchPhrases = ['Why I oughta...', 'Nyuk Nyuk Nyuk', 'Poifect!', 'Spread out!', 'Say a few syllables!', 'Soitenly!'];
app.set('view engine', 'jade');
app.set('view options', { layout: true});
app.set('views', __dirname + '/views');
app.get('/stooges/chat', function(req, res, next) {
res.render('chat');
});
io.sockets.on('connection', function(socket) {
var sendChat = function(title, text) {
socket.emit('chat', {
title: title,
contents: text
});
};
setInterval(function() {
var randomIndex = Math.floor(Math.random() * catchPhrases.length);
sendChat('Stooge', catchPhrases[randomIndex]);
}, 5000);
sendChat('Welcome to Stooge Chat', 'The Stooges are on the line');
socket.on('chat', function(data) {
sendChat('You', data.text);
});
});
app.get('/?', function(req, res) {
res.render('index');
});
var port = 8080;
server.listen(port);
console.log('Listening on port ' + port);
对应的翡翠模板:
extends layout
block scripts
script(type='text/javascript', src='/socket.io/socket.io.js')
script(type='text/javascript')
var socket = io.connect('http://localhost:8080');
socket.on('chat', function(data) {
document.getElementById('chat').innerHTML = '<p><b>' + data.title + '</b>: ' + data.contents + '</p>';
});
var submitChat = function(form) {
socket.emit('chat', {text: form.chat.value});
return false;
};
block content
div#chat
form(onsubmit='return submitChat(this);')
input#chat(name='chat', type='text')
input(type='submit', value='Send Chat')
输出如下:
info - socket.io started
Listening on port 8080
SyntaxError: /home/rob/Documents/Node/views/chat.jade:9
7| socket.on('chat', function(data) {
8| document.getElementById('chat').innerHTML = '<p><b>' + data.title + '</b>: ' + data.contents + '</p>';
> 9| });
10| var submitChat = function(form) {
11| socket.emit('chat', {text: form.chat.value});
12| return false;
Unexpected token ;
at Function (<anonymous>)
at assertExpression (/home/rob/Documents/Node/node_modules/jade/lib/lexer.js:31:3)
at Object.Lexer.attrs (/home/rob/Documents/Node/node_modules/jade/lib/lexer.js:648:20)
at Object.Lexer.next (/home/rob/Documents/Node/node_modules/jade/lib/lexer.js:868:15)
at Object.Lexer.lookahead (/home/rob/Documents/Node/node_modules/jade/lib/lexer.js:114:46)
at Parser.lookahead (/home/rob/Documents/Node/node_modules/jade/lib/parser.js:100:23)
at Parser.peek (/home/rob/Documents/Node/node_modules/jade/lib/parser.js:77:17)
at Parser.tag (/home/rob/Documents/Node/node_modules/jade/lib/parser.js:733:22)
at Parser.parseTag (/home/rob/Documents/Node/node_modules/jade/lib/parser.js:719:17)
at Parser.parseExpr (/home/rob/Documents/Node/node_modules/jade/lib/parser.js:188:21)
在Jade模板中编写内联JavaScript时,您需要在script标记后添加一个点。你还应该缩进你的代码。也就是说,它应该看起来像这样:
script(type='text/javascript', src='/socket.io/socket.io.js')
script(type='text/javascript').
var socket = io.connect('http://localhost:8080');
socket.on('chat', function(data) {
document.getElementById('chat').innerHTML = '<p><b>' + data.title + '</b>: ' + data.contents + '</p>';
});
var submitChat = function(form) {
socket.emit('chat', {text: form.chat.value});
return false;
};
相关文章:
- ReactJS Unexpected Token ) on Safari only
- Ajax错误:SyntaxError: Unexpected token <错误
- ajaxt weird error: Uncaught SyntaxError: Unexpected token if
- index.php:13 Uncaught SyntaxError: Unexpected token: Ci中的错误消
- 接收错误"Uncaught SyntaxError: Unexpected token "用Shin
- React JS应用程序- Uncaught SyntaxError: Unexpected token <
- nodeJS syntaxError: unexpected token this
- 尝试使用标记的模板字符串给出'Uncaught SyntaxError: Unexpected token
- 未捕获的SyntaxError: Unexpected token <在JQuery UI地图插件?在本地工作,而不是在
- Javascript for循环返回“Uncaught SyntaxError: Unexpected Token <&
- 在尝试动态删除表行时,得到Uncaught SyntaxError: Unexpected token}
- 未捕获的SyntaxError: Unexpected token <谷歌分析谷歌标签管理器
- 为什么json返回"Unexpected Token:"当使用$.ajax()时,我的json格式正
- 查找&;Unexpected token;&;的原因/行Express-JS中的错误
- 内联onclick事件返回"Uncaught SyntaxError: Unexpected token (&
- 未捕获的SyntaxError: Unexpected token <在Javascript中调用外部web服务时出现错
- 来自UglifyJs的错误:SyntaxError: Unexpected token: operator (>)
- 未捕获的SyntaxError: Unexpected token ILLEGAL (PHP &Javascript)
- 未捕获的SyntaxError: Unexpected token: Can't resolve
- Uncaught SyntaxError: Unexpected token)在解析JSON字符串时