2017-07-17 11 views
0

/image/coverまたは/image/sub/をクライアントから送信すると、ルータ機能がまったく機能しないため、404が送信されます。動作するはずですが、文字通りわかりません。私はこの事件を経験したことはありません。それは何の理由もありません。koaルータが動作しない404を送信する

ルータ

import Router from 'koa-router' 

const router = new Router({ prefix: '/image' }) 

router.post('/cover', async (ctx, next) => { 
    let URLpath = ctx.request.body.files.cover.path 
    ctx.body = { url: URLpath } 
}) 

router.post('/sub', async (ctx, next) => { 
    let URLpath = ctx.request.body.files.sub.path 
    ctx.body = { url: URLpath } 
}) 

export default router 

ログ

<-- POST /image/cover 
    --> POST /image/cover 404 33ms - 

インポート 'KOA-COMPOSE' から構成インポートコード(更新) ルータ/ index.js

import accountRouter from './account' 
import mypageRouter from './mypage' 
import imageRouter from './image' 
import postRouter from './post' 

const routes = [ 
    accountRouter, 
    mypageRouter, 
    imageRouter, 
    postRouter 
] 

export default() => compose([].concat(
    ...routes.map(r => [r.routes(), r.allowedMethods()]) 
)) 

app.js

import Koa from 'koa' 
import serve from 'koa-static' 
import logger from 'koa-logger' 
import views from 'koa-views' 
import session from 'koa-session' 
import passport from 'koa-passport' 
import bodyParser from 'koa-body' 
import path from 'path' 

import routes from './routes' 
import config from './config' 
import form from './util/formidable' 

import mongoose from 'mongoose' 
mongoose.Promise = global.Promise 

mongoose 
    .connect(config.MONGODB_URI) 
    .then(startApp).catch(::console.error) 

function startApp() { 
    const app = new Koa() 
    const port = process.env.PORT || 3000 
    const dist = __dirname + '/views/' 
    console.log(form) 
    const bpOption = { IncomingForm: form, multipart: true } 

    app.keys = ['secret', 'key']; 
    require('./util/passport') 

    app 
     .use(logger()) 
     .use(serve(dist)) 
     .use(session({}, app)) 
     .use(bodyParser(bpOption)) 
     .use(passport.initialize()) 
     .use(passport.session()) 
     .use(views(__dirname+'/views', { extension: 'pug'})) 
     .use(routes()) 

    app.listen(port,() => console.log(`[!] Server is Running on ${port}`)) 
} 
+0

これをインポートする場所でコードを共有できますか? –

+0

@AramilRey私はそれを更新しました! –

答えて

1

あなたはヘルプ機能を必要とする:

// @help function record route table map

'use strict'; 

const fs = require('fs'); 
const resolve = require('path').resolve; 

module.exports = function record(router, filename) { 
    const routeTable = fs.createWriteStream(resolve(__dirname, filename)); 
    routeTable.write(`Update Date: ${new Date().toString()}\n\n`); 
    for (let len = router.stack.length, i = 0; i < len; i += 1) { 
    const route = router.stack[i]; 
    routeTable.write(`URL:${route.path}\t${route.methods.join('|')}\n`); 
    } 
    routeTable.end(); 
}; 

、あなたは

const record = require('./record'); 
record(routeApp, '.routerc') 
で、それを必要とすることができますそれはあなたが問題を解決するために助けることができる

URL: /a/c/c POST 
URL: /b/a/d GET 

次のような内容で.routercファイル(ルートマップ)を取得します。多分働くかもしれない。がんばろう!

関連する問題