2013-09-21 3 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: Property 'engine' объекта # не является функцией at View.render (/home/sasuke/Documents/harddisk/workspace/coderacer/node_modules/express/lib/view.js:76:8) ETC –

ответ

0

Вы не говорите Экспресс использовать двигатель шаблона. Для использования механизма шаблонов, такого как 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() на Эко, так что это только библиотеки необходимо инициализировать использовать Eco. Если вам нужна версия 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.render() вместо res.sendfile() вместо res.type() + res.sendfile()? –

+0

Функция 'res.render()' предназначена либо для разметки представления, либо для создания шаблона *, если * вы указали механизм шаблонов, такой как Jade или EJS. Если у вас нет механизма шаблонов и вы просто хотите сервер HTML, просто подайте файл с 'content-type', установленным на' html'. – hexacyanide

+0

Спасибо. Но также я установил зависимость eco с менеджером пакетов npm. Поэтому он должен работать с использованием 'res.render()' –

Смежные вопросы