Ho appena iniziato a imparare il nodo e sto provando a creare un'applicazione web utilizzando Node ed Express. E ho il seguente codice nel mio file app.js, con la seguente struttura di directory.NodeJs Utilizzo di ExpressJs: TypeError: string non è una funzione in Function.app.render
Directory Structure:
app
assets
controller
model
view
index.jade
global
node_modules
app.js
package.json
-js-
var express = require('express');
var app = express();
app.configure(function() {
app.set('view', __dirname + '/app/view');
app.set('view engine', 'jade');
app.use(app.router);
});
app.get('/', function(req, res){
res.render('index', {title: 'express'});
});
app.listen(3000);
console.log('Listening on port 3000');
Dopo aver eseguito il comando node app
e andando a localhost: 3000. Ottengo il seguente errore. Presumo che non gli piaccia la stringa su questa linea ->res.render('index', {title: 'express'});
. Comunque da tutto quello che ho trovato su Google sembra giusto. Quindi mi devo perdere qualcos'altro.
MESSAGGIO DI ERRORE:
TypeError: stringa non è una funzione a Function.app.render (C: \ myapp \ Express \ node_modules \ Express \ lib \ application.js: 488: 12) a ServerResponse .res.render (C: \ myapp \ express \ node_modules \ express \ lib \ response.js: 803: 7) in C: \ myapp \ express \ app.js: 19: 6 ai callback (C: \ myapp \ express \ node_modules \ express \ lib \ router \ index.js: 164: 37) al parametro (C: \ myapp \ express \ node_modules \ express \ lib \ router \ index.js: 138: 11) al passaggio (C: \ myapp \ express \ node_modules \ express \ lib \ router \ index.js: 145: 5) su Router._dispatch (C: \ myapp \ express \ node_modules \ express \ lib \ router \ index.js: 173: 5) su Object. router (C: \ mioapp \ express \ node_modules \ express \ lib \ router \ index.js: 33: 10) al prossimo (C: \ mioapp \ express \ node_mod ules \ express \ node_modules \ connect \ lib \ proto.js: 190: 15) su Object.expressInit [come handle] (C: \ myapp \ express \ node_modules \ express \ lib \ middleware.js: 30: 5)
Yep, che sembra essere il problema. Ovviamente ora ho un nuovo erorr per indentation. Ma posso aggiustarlo. Ero sotto il presupposto che 'views' doveva corrispondere al mio nome di directory. Credo di aver sbagliato. Comunque, grazie per l'aiuto. –
Sì, TJ è un maestro di denominazione che inizialmente è estremamente confuso, ma è conciso una volta che ci si fa da esso. 'app.get',' app.use', 'app.configure' lanciano noobs per un ciclo. Questo dovrebbe essere semplicemente 'app.set ('viewPath')' IMHO. Inoltre puoi rimuovere il tuo wrapper 'app.configure' mentre sta eseguendo precisamente jack squat. –