2016-07-06 7 views
1

初心者のFeathersJSユーザーがここにいます。私は明らかにいくつかの重要な理解を欠いている。FeathersJS:アプリを初期化した後にルートを追加できません。

私は、MySQLモデルを使用して簡単なREST APIを作成しようとしています。私はthis issue threadのドキュメントで参照されるコード構造に従おうとしています。最初のapp.use()ブロック作業で定義したルートですが、それ以降に定義されたルートはありません。ここでの部分的なコードは、npm startアプリをINGのときに私はすべてのエラーを得ることはありませんin this gist

const app = feathers(); 
app.configure(configuration(path.join(__dirname, '..'))); 

app.use(compress()) 
    .options('*', cors()) 
    .use(cors()) 
    .use(favicon(path.join(app.get('public'), 'favicon.ico'))) 
    /* THIS ROUTE WORKS FINE */ 
    .use('/', serveStatic(app.get('public'))) 
    .use(bodyParser.json()) 
    .use(bodyParser.urlencoded({ 
    extended: true 
    })) 
    .configure(hooks()) 
    .configure(rest()) 
    .configure(socketio()) 
    .configure(models) 
    .configure(services) 
    .configure(middleware); 

const appModels = app.get('models'); 
const beerOptions = { 
    Model: appModels.beer, 
    paginate: { 
    default: 15, 
    max: 50 
    } 
}; 

/* NEITHER OF THESE ROUTES WORK */ 
app.use('/beer', service(beerOptions)); 
// IF YOU DELETE THE DEFINITION ABOVE AND UNCOMMENT 
// THIS NEXT LINE, THE ROOT URL GIVES A 404 
// app.use('/', serveStatic(app.get('public'))); 

休みます。しかし、私の/beerはそこに定義されているどんなルートもそうであるように404sだけをルーティングします。私はガイドを通して、私の誤解の原因を探してきました。しかし、私はちょっと固まっています。

答えて

2

Expressと同様に、ミドルウェアの順序(さらに、Feathersの場合は、configure呼び出し)が重要です。生成されたアプリケーションの場合、.configure(middleware);は、ハンドラを登録して404エラーをスローするため、が最後に実行されます。それ以降のミドルウェア(エラーハンドラを除く)は決して実行されません。

+0

なぜでしょうか? OPの質問に明確に答えましたか? – Daff

関連する問題