TypeScript版React项目声明edge-js时出现fs.existsSync is not a function错误如何解决
你遇到的报错不是配置问题,是运行环境不匹配导致的:
- create-react-app创建的是浏览器端运行的前端项目,
fs是Node.js服务端专属的原生模块,浏览器环境没有对应实现,调用相关API自然会抛出不存在的错误。 edge-js是仅支持Node.js环境运行的库,用于Node.js进程中调用.NET代码,无法直接在浏览器端的React代码中使用。- 你安装的
node-js依赖是无效的,Node.js是本地运行时环境,不需要通过包管理器安装,可直接执行yarn remove node-js卸载冗余依赖。
场景1:你要开发的是浏览器端网页打印功能
直接删除你新增的两行require代码,使用浏览器原生打印API即可:
触发打印可以直接调用window.print(),如需定制打印内容可以单独设置打印区域的CSS样式。
场景2:你需要调用本地打印机的特殊能力/要调用.NET相关逻辑
两种实现方案可选:
- 方案1:使用Electron将React项目打包为桌面应用,Electron的主进程为Node.js环境,可以正常使用
fs和edge-js,渲染进程(也就是你的React代码)可以通过IPC通信调用主进程封装好的相关能力。 - 方案2:单独搭建Node.js后端服务,将
edge-js相关逻辑封装为接口,前端React项目通过HTTP请求调用后端接口实现对应功能,不要在前端代码中引入服务端专属依赖。
内容的提问来源于stack exchange,提问作者Polaris Nation
相关产品推荐
相关产品推荐

