2015-10-14 81 views
0

我相信這是小事,但我無法弄清楚。 Node,nodemon和gulp使用app.js來啓動我的服務器,所以我不確定爲什麼一個方法可以工作,而gulp不能。如果我啓動我的服務器使用:節點啓動我的服務器,吞嚥,但吞嚥沒有找到任何路徑

nodemon app.js或 節點app.js它開始罰款,當我在瀏覽器中使用路徑localhost:1337它做它應該做的。

當我使用命令:

一飲而盡

它說,它啓動了服務器,但是當我瀏覽到本地主機:1337不顯示不是「得不到/」以外的任何與我無關來源顯示在檢查員。我仍然收到「app正在監聽」消息,如我的app.js console.log中所示。我gulpfile如下:

var gulp = require('gulp'); 
var nodemon = require('gulp-nodemon'); 

gulp.task('nodemon', function(){ 
    nodemon({ 
    script: './app/app.js' 
    }) 

}); 

gulp.task('watch', function(){ 
    gulp.watch('*.js', ['nodemon']); 
}); 

gulp.task('default', ['nodemon']); 

my app.js file is: 

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

app.use(express.static('../views')); 
app.use(express.static('../bower_components/angular')); 
app.use(express.static('./directives')); 

app.listen(1337); 
console.log("The port is listening"); 

回答

1

的當一個請求是否在對undefined路線做出「無法GET /」顯示,當你去localhost:1337是快遞的一般消息。需要爲要提供的頁面定義路由。您需要在http://localhost:1337/上添加一個路由來處理對您的應用程序根目錄的請求。

app.get('/', function(req, res) { 
    // return back a message 
    res.send('Welcome!'); 

}); 

將上述片段上方app.listen()和消息「歡迎!」將被顯示。

要在html文件中提供視圖,您需要添加視圖引擎,以便Express知道如何呈現文件。此外,views屬性需要配置,以便Express知道從哪裏渲染視圖。下面的示例使用ejs來處理純html文件,而不用擔心像jade這樣的模板引擎。現在

app.use('views', path.join(__dirname + '/views')); 
app.engine('html', require('ejs').renderFile); 
app.use('view engine', 'html'); 

我們可以使用render功能res對象發送我們的index.html文件:

app.get('/', function(req, res) { 
    res.render('index'); 
}); 

這是一個guide從如何實現高速路由ExpressJS。

+0

它的工作原理是它打印歡迎使用屏幕,但它仍然不顯示我的源代碼或使用我在視圖目錄中的index.html文件。爲什麼在終端中使用命令「nodemon app.js」允許服務器在使用「gulp」運行默認的Nodemon啓動app.js並返回任何內容時在我的視圖目錄中獲取index.html?他們都運行相同的文件,但吞嚥(這是使用nodemon來啓動app.js)不給我與運行「nodemon app.js」 – Mike

+0

相同的結果吞嚥和普通終端做的是完全相同的事情,他們是都使用nodemon應用程序執行'app.js'文件。問題不在於我可以看到的gulp vs terminal,根據你發送的源代碼看起來就像你的'app.js'文件缺少路由。我已經更新了上面的答案,希望能夠更好地解決有關提供意見的問題。 – peteb