【问题标题】:markdown is not a function降价不是一个功能
【发布时间】:2022-01-15 18:52:19
【问题描述】:

markdown 不是一个函数,虽然我已经使用npm install marked 安装了它 在 app.js 中,我使用了 app.use,其中 res.local.filterUserHTML 是一个函数, 它使用了markdown函数,但是当它被调用时它会给出错误,说明它不能识别markdown函数。

app.js

const sanitizeHTML = require('sanitize-html')
const markdown = require('marked')

app.use(function(req, res, next) {
  
  res.locals.filterUserHTML = function(content) {
    return sanitizeHTML(markdown(content), {allowedTags: ['bold', 'i'], allowedAttributes: {}})
  }
}

single-post-screen.ejs

...
 <div class="body-content">
    <%- filterUserHTML(post.body) %>
  </div>
...

输出出错

TypeError: E:\Web Development\Javascript\Javascript Full Stack from Scratch\ComplexApp\views\single-post-screen.ejs:44
    42| 
    43|   <div class="body-content">
 >> 44|     <%- filterUserHTML(post.body) %>
    45|   </div>
    46| 
    47|   

markdown is not a function
    at Object.res.locals.filterUserHTML (E:\Web Development\Javascript\Javascript Full Stack from Scratch\ComplexApp\app.js:41:25)
    at eval (eval at compile (E:\Web Development\Javascript\Javascript Full Stack from Scratch\ComplexApp\node_modules\ejs\lib\ejs.js:662:12), <anonymous>:47:17)
    at single-post-screen (E:\Web Development\Javascript\Javascript Full Stack from Scratch\ComplexApp\node_modules\ejs\lib\ejs.js:692:17)
    at tryHandleCache (E:\Web Development\Javascript\Javascript Full Stack from Scratch\ComplexApp\node_modules\ejs\lib\ejs.js:272:36)
    at View.exports.renderFile [as engine] (E:\Web Development\Javascript\Javascript Full Stack from Scratch\ComplexApp\node_modules\ejs\lib\ejs.js:489:10)
    at View.render (E:\Web Development\Javascript\Javascript Full Stack from Scratch\ComplexApp\node_modules\express\lib\view.js:135:8)
    at tryRender (E:\Web Development\Javascript\Javascript Full Stack from Scratch\ComplexApp\node_modules\express\lib\application.js:640:10)
    at Function.render (E:\Web Development\Javascript\Javascript Full Stack from Scratch\ComplexApp\node_modules\express\lib\application.js:592:3)
    at ServerResponse.render (E:\Web Development\Javascript\Javascript Full Stack from Scratch\ComplexApp\node_modules\express\lib\response.js:1017:7)
    at exports.viewSingle (E:\Web Development\Javascript\Javascript Full Stack from Scratch\ComplexApp\controllers\postController.js:25:9)

【问题讨论】:

    标签: javascript markdown ejs sanitize


    【解决方案1】:

    来自docs

    import { marked } from 'marked';
    // or const { marked } = require('marked');
    
    const html = marked.parse('# Marked in Node.js\n\nRendered by **marked**.');
    

    所以不要使用markdown(),而是尝试使用markdown.parse()

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-07-17
      • 1970-01-01
      • 2018-02-04
      • 2018-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多