Не могу использовать EJS-хук в Strapi, показывающий ошибку TypeError: ctx.render не является функцией

#ejs #koa #strapi

#ejs #koa #strapi

Вопрос:

В чем ошибка?

Я пытаюсь отобразить страницу с помощью strapi-hook-ejs, но это не работает, даже если я следовал всей официальной документации.

Выдает следующую ошибку [2020-10-13T03:34:15.198Z] ошибка TypeError: ctx.render не является функцией в Object.page (C:UsersnomanDesktopTestAPIapihomecontrollershome.js:11:20 ) при отправке (C:UsersnomanDesktopTestAPInode_moduleskoa-routernode_moduleskoa-composeindex.js:44:32 ) при следующем (C:UsersnomanDesktopTestAPInode_moduleskoa-routernode_moduleskoa-composeindex.js:45:18 ) при отправке (C:UsersnomanDesktopTestAPInode_moduleskoa-composeindex.js:42:32 ) в C:UsersnomanDesktopTestAPInode_modulesstrapilibmiddlewaresrouterutilsrouterChecker.js:79:28 при отправке (C:UsersnomanDesktopTestAPInode_moduleskoa-composeindex.js:42:32 ) в модуле.экспорт (C:UsersnomanDesktopTestAPInode_modulesstrapi-plugin-users-permissionsconfigpoliciespermissions.js:86:9) в processTicksAndRejections (internal/process/task_queues.js:97:5) в асинхронном режиме C:UsersnomanDesktopTestAPInode_modulesstrapi-utilslibpolicy.js:68:5 при асинхронной подаче (C:UsersnomanDesktopTestAPInode_moduleskoa-staticindex.js:59:5 ) при асинхронном C:UsersnomanDesktopTestAPInode_modulesstrapilibmiddlewaresxssindex.js:26:9 [2020-10-13T03:34:15.212Z] отладка GET /home / page (39 мс) 500 [2020-10-13T03:34:15.255Z] отладка GET /favicon.ico (1 мс) 200

Шаги для воспроизведения поведения

  1. Я установил strapi-hook-ejs (npm i strapi-hook-ejs —save)
  2. Создайте новый перехват.файл json в папке config. (./config/hook.json)
  3. Добавлен этот код
 {
    "ejs": {
        "enabled": true,
        "layout": false,
        "viewExt": "ejs",
        "partial": true,
        "cache": false,
        "debug": true
    }
}
  
  1. Создал папку views и файл home.ejs в ней (./views/home.ejs) с помощью этого кода <h1><%=title%></h1>

  2. Затем я создал новый контроллер и указал к нему маршрут.

 module.exports = {
    page: async ctx => {
        return ctx.render('home', {title: 'My app title'});
    },
};
  
  1. Теперь, когда я иду по этому маршруту, я получаю сообщение об ошибке.

Ожидаемое поведение должно отображать домашнюю страницу

Мой Package.json

 {
  "name": "source-api",
  "private": true,
  "version": "0.1.0",
  "description": "A Strapi application",
  "scripts": {
    "develop": "strapi develop",
    "start": "strapi start",
    "build": "strapi build",
    "strapi": "strapi"
  },
  "devDependencies": {},
  "dependencies": {
    "axios": "^0.20.0",
    "strapi": "3.1.4",
    "strapi-admin": "3.1.4",
    "strapi-connector-mongoose": "3.1.4",
    "strapi-hook-ejs": "^3.2.3",
    "strapi-plugin-content-manager": "3.1.4",
    "strapi-plugin-content-type-builder": "3.1.4",
    "strapi-plugin-email": "3.1.4",
    "strapi-plugin-upload": "3.1.4",
    "strapi-plugin-users-permissions": "3.1.4",
    "strapi-provider-upload-cloudinary": "^3.1.4",
    "strapi-utils": "3.1.4"
  },
  "author": {
    "name": "Nehal Ahmad"
  },
  "strapi": {
    "uuid": "1034d7e9-73ba-49d4-8862-0d5d62ae7008"
  },
  "engines": {
    "node": "12.x",
    "npm": "6.x"
  },
  "license": "MIT"
}
  

Система

  • Node.js версия: v12.18.1
  • Версия NPM: 6.14.5
  • Версия Strapi: 3.1.4
  • База данных: Mongo db
  • Операционная система: Windows 10 pro

Я пробовал это в последней версии strapi.

Ответ №1: