簡體   English   中英

找不到“ .js”文件擴展名的引擎

[英]Engine not found for the “.js” file extension

我想在Koa中使用koa視圖 ,在Next.js中使用Koa-Router 在以前的項目中,express沒有任何問題,但是在這個項目中,我必須使用Koa。 我要使用其路由器渲染頁面: /some/page/:id 遵循相同的Nextjs方式:

 router.get('/some/page/:id', async (ctx, next) => {
   const actualPage = '/some/page/id' // id.js (not actual name 😝)
   await ctx.render(actualPage, {/* could pass object */})
 });

如果我使用快遞,那會起作用。 使用Koa:

const Koa = require('koa');
const views = require('koa-views');
// const render = require('koa-views-render'); <-- I what's this?

[..] // Making things short here
const server = new Koa();
const router = new Router();

// My issue, I'm seeing tutorials using other engines: .ejs etc
// I'm not using any, I only have .js files
server.use(views(__dirname + "/pages", { extension: 'js' }));

使用與上述相同的router.get...函數,我得到:

錯誤:找不到“ .js”文件擴展名的引擎

當我轉到/some/page/123 ,我希望它能夠呈現文件/pages/some/page/id.js 怎么樣?

事實證明,我不需要任何額外的模塊即可實現此功能🙀

創建一個函數,即路由,然后將approuter作為參數傳遞

const routes = (router, app) => {

  router.get('/some/page/:id', async (ctx) => {
    const { id } = ctx.params
    const actualPage = '/some/page/id'

    // Render the page
    await app.render(ctx.req, ctx.res, actualPage, {foo: 'Bar'})
  }

}

module.exports = routes

在您的server.js文件中:

// const routes = require('./routes);
// const app = next({ dev }); // import other modules for this section
// app.prepare().then(() => {
//   const router = new Router();
//   [..]
//   routes(router, app)
// })

注釋掉的部分是精簡版,用於指出實際情況。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM