搜尋

首頁  >  問答  >  主體

javascript - koa關於render時的路徑問題?

#以上是目錄結構,路由如下:

const router = require('koa-router')();
const views = require('koa-views');

router.use(views(__dirname + '/views'));
router.get('/', async (ctx, next) => {
    await ctx.render('index');
});

module.exports = router;

以上運行,會報以下錯誤:

#於是我將關於路徑那句改成

router.use(views(__dirname + '../views'));

報錯訊息變成

#很無奈的,改成這樣就能運行了:

router.use(views(__dirname + '/../views'));

#現在是正常了,但這樣顯然是不合理的,請問該怎麼改呢?

順手貼出index.js的程式碼:

const Koa = require('koa');
const router = require('./routes/routes');

const app = new Koa();

// log request URL:
app.use(async (ctx, next) => {
    console.log(`Process ${ctx.request.method} ${ctx.request.url}...`);
    await next();
});

// add router middleware:
app.use(router.routes());

app.listen(3000);
console.log('app started at port 3000...');

謝謝!

迷茫迷茫2712 天前817

全部回覆(1)我來回復

  • 淡淡烟草味

    淡淡烟草味2017-06-28 09:27:34

    你的routes.js檔案是在/Users/dark/Works/drip-file/routes資料夾下的,所以__dirname的值就是/Users/dark/Works/drip-file/routes __dirname + '/views'就等於/Users/dark/Works/drip-file/routes/views,所以存取index文件的時候就會去這個資料夾下面尋找,所以找不到。

    當你改成__dirname+'/../views'的時候,就會去/Users/dark/Works/drip-file/views這個資料夾下尋找了,所以能找到。
    如果想改成__dirname+'/views',如果沒有單獨建一個routes資料夾的必要,就把routes.js檔案拿到和index.js檔案同一個資料夾吧。

    回覆
    0
  • 取消回覆