2015-04-23 33 views
4

我正在學習關於均值堆棧和我以下的平均在thinkster.io https://thinkster.io/mean-stack-tutorial/測試REST路線的捲曲-X PUT,返回404

教程在我的「開放REST路由」部分。我試圖使用捲曲用命令把一個給予好評:

curl -X PUT http://localhost:3000/posts/55387047f2334d2 
c227e8079/upvote 

我收到以下錯誤信息:

C:\Users\Michael\Desktop>curl -X PUT http://localhost:3000/posts/55387047f2334d2 
c227e8079/upvote 
<h1>Not Found</h1> 
<h2>404</h2> 
<pre>Error: Not Found 
    at app.use.res.render.message (C:\Users\Michael\Desktop\flapper-news\app.js: 
39:13) 
    at Layer.handle [as handle_request] (C:\Users\Michael\Desktop\flapper-news\n 
ode_modules\express\lib\router\layer.js:82:5) 
    at trim_prefix (C:\Users\Michael\Desktop\flapper-news\node_modules\express\l 
ib\router\index.js:302:13) 
    at C:\Users\Michael\Desktop\flapper-news\node_modules\express\lib\router\ind 
ex.js:270:7 
    at Function.proto.process_params (C:\Users\Michael\Desktop\flapper-news\node 
_modules\express\lib\router\index.js:321:12) 
    at next (C:\Users\Michael\Desktop\flapper-news\node_modules\express\lib\rout 
er\index.js:261:10) 
    at C:\Users\Michael\Desktop\flapper-news\node_modules\express\lib\router\ind 
ex.js:603:15 
    at next (C:\Users\Michael\Desktop\flapper-news\node_modules\express\lib\rout 
er\index.js:246:14) 
    at Function.proto.handle (C:\Users\Michael\Desktop\flapper-news\node_modules 
\express\lib\router\index.js:166:3) 
    at router (C:\Users\Michael\Desktop\flapper-news\node_modules\express\lib\ro 
uter\index.js:35:12)</pre> 

我的貓鼬架構定義有關應用程序的module.exports =應用程序。 JS,所以我不知道還有什麼要做。我檢查了我的複製和粘貼技巧,沒有錯別字。

回答

1

您是否仔細檢查過您是否執行了上一步?如果沒有設置路由器,頁面將無法解析。

router.put('/posts/:post/upvote', function(req, res, next) { 
    req.post.upvote(function(err, post){ 
    if (err) { return next(err); } 

    res.json(post); 
    }); 
}); 

這是我唯一能想到的問題,如果您在此步驟之前還沒有問題,您也可以檢查您的服務器是否可以通過本地主機解析,有時您必須使用您的私有IP 192.168等,因爲它取決於您的主機具有的網絡配置。

+0

謝謝。是的,我做了上一步。一切都很好,包括使用curl創建帖子。你是什​​麼意思檢查你的服務器可以通過本地主機解析?我正在使用curl,並且尚未在本地主機上運行任何內容。我是不是該?然後,我將在教程中繼續前進。 – Sticky

+1

好吧,我猜你在Mac上,一切都在本地安裝。我不是Mac專家,所以我不知道我是否可以幫助您解決特定於Mac的主機/ DNS路由問題,但我懷疑是這種情況。 所以根據教程,你剛剛得到貓鼬配置,你正在運行mongo。當你在終端運行'mongo'命令時會發生什麼?一切都很好,在這裏對嗎? –

+1

你是主應用主頁加載正確,對嗎?當你運行'curl http:// localhost:3000/posts' –

2

重新啓動節點服務器解決了我的問題

1

我想我可能有一個答案。我已經和一些在本教程的這個特定部分被抓到的人交談過。

在開放REST路線>預加載的對象,我們被指示輸入以下代碼:

router.param('post', function(req, res, next, id) { 
    var query = Post.findById(id); 

    query.exec(function(err, post) { 
    if (err) { return next(err); } 
    if (!post) { return next(new Error('can\'t find post')); } 

    req.post = post; 
    return next(); 
    }); 
}); 

然而,有些人始終留出下聯:

var query = Post.findById(id); 

或甚至插入到第三行:

var query.exec(function(err, post) { 

這可能是非常簡單的s解決你的問題。