Angular项目出现Can't resolve 'fs'等模块未找到报错该如何解决?
Getting error "Can't resolve 'fs'" in angular
ERROR in ./node_modules/node-json2html/node.json2html.js
Module not found: Error: Can't resolve 'fs' in 'C:\Projects\bvd-ui-app\node_modules\node-json2html'
ERROR in ./node_modules/node-json2html/node.json2html.js
Module not found: Error: Can't resolve 'path' in 'C:\Projects\bvd-ui-app\node_modules\node-json2html'
ERROR in ./node_modules/node-json2html/node.json2html.js
Module not found: Error: Can't resolve 'vm' in 'C:\Projects\bvd-ui-app\node_modules\node-json2html'
fs、path、vm均为Node.js服务端内置原生模块,仅在Node运行环境中提供,浏览器运行环境无对应实现。本次报错是因为项目依赖的node-json2html为Node端专属包,不兼容前端浏览器环境,Angular编译打包阶段无法解析缺失的Node原生模块,因此抛出错误。
- 方案1:替换为浏览器端兼容的json2html版本(优先推荐)
先卸载当前的Node端专属包:npm uninstall node-json2html
再安装适配浏览器的版本:npm install json2html
安装完成后修改项目中对应的import引入路径即可正常使用。 - 方案2:配置Angular忽略缺失的Node原生模块(仅做临时兼容,不推荐)
如果暂时无法替换依赖,可以在项目根目录的package.json中添加如下配置,告诉Angular打包时将这些Node模块设置为空模拟,屏蔽打包报错:
注意该方案仅能解决打包报错问题,如果"browser": { "fs": false, "path": false, "vm": false }node-json2html运行时确实调用了上述Node模块的能力,项目运行时仍会出现功能异常。
内容的提问来源于stack exchange,提问作者pradnya

