Node.js中使用html-to-draftjs报Window未定义错误的原因排查
问题:Node.js环境中使用html-to-draftjs出现window未定义且导入失败的问题
我编写了一个将HTML转换为DraftJS的独立函数,使用了html-to-draftjs库的htmlToDraft方法,代码如下:
const htmlToDraftBlocks = (html) => { const blocksFromHTML = htmlToDraft(html); const state = ContentState.createFromBlockArray( blocksFromHTML.contentBlocks, blocksFromHTML.entityMap ); const editorState = EditorState.createWithContent(state); return editorState; };
在Node.js环境运行服务时,出现以下错误:
ReferenceError : window is not defined
我尝试了以下导入方式,但htmlToDraft始终为null,无法完成导入:
let htmlToDraft = null; if (typeof window !== 'undefined') { htmlToDraft = require('html-to-draftjs').default; }
请问该错误出现的原因是什么?
原因分析
核心错误原因:
html-to-draftjs库的内部实现直接依赖浏览器环境的window全局对象,没有做服务端环境的兼容处理。Node.js运行时不存在window对象,所以执行库代码时会直接抛出ReferenceError。导入失败的原因:你写的
typeof window !== 'undefined'判断在Node.js环境中永远为false,因为Node.js中根本不存在window对象,导致require('html-to-draftjs').default的代码从未执行,自然htmlToDraft始终为null。
内容的提问来源于stack exchange,提问作者Radhushani
相关产品推荐
相关产品推荐

