我正在研究node.js上的一本书,但我试图用coffeescript而不是javascript来学习它。
目前正在尝试将一些coffeescript编译为此js,作为路由演示的一部分:
var http = require('http'),
url = require('url');
http.createServer(function (req, res) {
var pathname = url.parse(req.url).pathname;
if (pathname === '/') {
res.writeHead(200, {
'Content-Type': 'text/plain'
});
res.end('Home Page\n')
} else if (pathname === '/about') {
res.writeHead(200, {
'Content-Type': 'text/plain'
});
res.end('About Us\n')
} else if (pathname === '/redirect') {
res.writeHead(301, {
'Location': '/'
});
res.end();
} else {
res.writeHead(404, {
'Content-Type': 'text/plain'
});
res.end('Page not found\n')
}
}).listen(3000, "127.0.0.1");
console.log('Server running at http://127.0.0.1:3000/');
这是我的coffeescript代码:
http = require 'http'
url = require 'url'
port = 3000
host = "127.0.0.1"
http.createServer (req, res) ->
pathname = url.parse(req.url).pathname
if pathname == '/'
res.writeHead 200, 'Content-Type': 'text/plain'
res.end 'Home Page\n'
else pathname == '/about'
res.writeHead 200, 'Content-Type': 'text/plain'
res.end 'About Us\n'
else pathname == '/redirect'
res.writeHead 301, 'Location': '/'
res.end()
else
res.writeHead 404, 'Content-Type': 'text/plain'
res.end 'Page not found\n'
.listen port, host
console.log "Server running at http://#{host}:#{port}/"
我要回的错误是:
helloworld.coffee:14:1: error: unexpected INDENT
res.writeHead 200, 'Content-Type': 'text/plain'
^^^^^^^^
这让我觉得我设置if...else
逻辑的方式有问题;当我编译时,它看起来也可能会尝试return
res.end
语句,而不是将其添加为第二个运行函数。
有任何想法可能会发生这种情况,以及如何修复我的代码?
答案 0 :(得分:3)
将您的else
更改为else if
,除了最后一次,它在res.writeHead 200, 'Content-Type': 'text/plain'
上投诉,因为您在第一个之后已经有表达式 - else pathname == '/about'
答案 1 :(得分:1)
这纯粹是制表符与空格的问题。 如果确实如此,请确保您的编辑器不会将空格转换为制表符。此外,使用光标检查代码并确保它不会跳过空白区域。 问题在于,虽然普通编辑器看到一个标签相当于两个或四个空格,但是coffeescript将其视为一个空格,因此缩进变得混乱。