Node.js运行报错Can't resolve 'fs' 修改package.json依赖后还需什么操作
解决方案
fs是Node.js内置的原生核心模块,你在依赖中安装的fs@0.0.1-security是官方发布的占位包,没有任何实际功能,首先需要先移除这个无效依赖。
第一步:移除错误依赖
执行命令:
npm uninstall fs
你也可以手动删除package.json中"fs": "^0.0.1-security"这行配置,之后删除node_modules文件夹和package-lock.json/yarn.lock文件,重新执行npm install安装依赖。
第二步:根据你的运行场景处理后续问题
场景1:开发纯Node.js后端服务
- 确认你本地安装的Node.js是官方维护的正常LTS版本,执行
node -v即可查看版本,原生Node环境默认支持fs模块,无需额外配置。 - 如果你使用TypeScript开发,需要安装Node.js内置模块的类型声明包:
npm install -D @types/node - 检查tsconfig.json中的配置,确认
compilerOptions.module没有配置为仅浏览器端可用的规范,target适配你运行的Node.js版本即可。
场景2:开发前端项目,用webpack/vite等打包工具打包时报错
浏览器运行环境本身没有fs模块,出现这个报错说明你项目中错误地在前端执行路径引入了需要fs能力的代码,按以下方式处理:
- 先排查代码,确认是否把仅服务端可用的逻辑写到了前端入口中,把调用fs的逻辑迁移到服务端侧即可解决。
- 如果你明确该依赖仅在服务端渲染/构建阶段执行,需要配置打包工具将fs标记为外部依赖:
- webpack配置(webpack.config.js):
module.exports = { // 其余配置不变 node: { fs: 'empty' } // webpack 5+ 版本使用以下配置替代 // externals: { // fs: 'commonjs fs' // } } - vite配置(vite.config.js/ts):
export default defineConfig({ // 其余配置不变 ssr: { external: ['fs'] } })
- webpack配置(webpack.config.js):
内容的提问来源于stack exchange,提问作者Goggi
相关产品推荐
相关产品推荐

