降价不是一个功能
markdown is not a function
markdown 不是函数,虽然我已经使用 npm install marked
安装了它
在 app.js 中我使用了 app.use 其中 res.local.filterUserHTML 是一个函数,
它使用降价功能,但是当它被调用时它给出错误,说明它不识别降价功能。
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: {}})
}
}
单-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)
来自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()
。
markdown 不是函数,虽然我已经使用 npm install marked
安装了它
在 app.js 中我使用了 app.use 其中 res.local.filterUserHTML 是一个函数,
它使用降价功能,但是当它被调用时它给出错误,说明它不识别降价功能。
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: {}})
}
}
单-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)
来自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()
。