![](/img/trans.png)
[英]java.lang.IllegalStateException: No matching engine found for file extension 'js' Spring Batch
[英]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
。 怎么樣?
事實證明,我不需要任何額外的模塊即可實現此功能🙀
創建一個函數,即路由,然后將app
和router
作為參數傳遞
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.