2013-09-21 30 views
-1

有些東西與我的代碼不兼容。我剛開始使用第一行代碼並安裝軟件包。下面是代碼:Node.js:節點方法是否改變?

server.coffee

require 'coffee-script' 
express = require 'express' 

app = express() 

app.get '/', (req, res) -> 
    res.send "Hello from express" 

app.listen(3000) 
console.log "Server is listening" 

index.eco

<!DOCTYPE html> 
    <html lang="end"> 
<head> 
    <title>Our Page</title> 
    <body> 
     <h1>Our Index</h1> 
    </body> 
</head> 
</html> 

首先我要說的是,express.createServer()有變化納入express()但儘管如此,當我嘗試做改變代碼

res.send "Hello from express" 

res.render 'index.eco', layout: false 

運行服務器後它不起作用。有任何想法嗎?

的package.json

{ 
    "name": "coderacer", 
    "version": "0.0.0", 
    "description": "Example", 
    "main": "index.js", 
    "scripts": { 
    "test": "echo \"Error: no test specified\" && exit 1" 
    }, 
    "author": "Ro", 
    "license": "BSD-2-Clause", 
    "dependencies": { 
    "coffee-script": "*", 
    "express": "*", 
    "eco": "*" 
    } 
} 
+0

您收到了什麼錯誤? – hexacyanide

+0

TypeError:對象#的屬性'引擎'不是函數 at View.render(/home/sasuke/Documents/harddisk/workspace/coderacer/node_modules/express/lib/view.js:76:8) ETC –

回答

0

你沒有告訴Express使用模板引擎。爲了使用Eco等模板引擎,您還需要安裝Consolidate.js。 Consolidate.js是一個庫適配器,允許除EJS和Jade之外的其他模板引擎與Express協同工作。

你這是怎麼了庫用於:

var express = require('express'); 
var app = express(); 
var cons = require('consolidate'); 

app.engine('eco', cons.eco); 
app.get('/', function(req, res) { 
    res.render(__dirname + '/template.eco', { 
    layout: false 
    }); 
}); 

的Consolidate.js會自動處理生態利用require(),所以這是你需要初始化使用環保的唯一庫。如果您需要CoffeeScript版本:

express = require("express") 
app = express() 
cons = require("consolidate") 

app.engine "eco", cons.eco 
app.get "/", (req, res) -> 
    res.render __dirname + "/template.eco", layout: false 
+0

我已經寫在純Javascript和它的工作,但我認爲這種方法是不同的,你能解釋我爲什麼使用res.type()+ res.sendfile()而不是res.render()? –

+0

'res.render()'函數可用於渲染視圖或渲染模板*(如果已指定模板引擎(如Jade或EJS))。如果你沒有模板引擎,只想服務器HTML,那麼只需要將'content-type'設置爲'html'的文件。 – hexacyanide

+0

謝謝。但是我也用npm包管理器安裝了eco依賴。所以它應該使用'res.render()' –

相關問題