Nuxt项目中package.json已存在依赖却提示child_process、fs未找到
问题根因
google-auth-library 是面向Node.js服务端环境开发的依赖,内部调用的child_process、fs、net、tls均为Node.js原生内置模块,浏览器环境不存在这些模块,你从npm安装的同名第三方包都是占位空包,无法解决问题。
解决步骤
清理无效依赖
把package.json中dependencies里的child_process、fs、net、tls、readline全部删除,这些都是Node.js内置模块,不需要额外安装,第三方同名包没有实际作用。调整Nuxt打包配置
在nuxt.config.js中添加webpack构建配置,客户端打包时排除这些Node.js专属模块:
// nuxt.config.js export default { // 其他原有配置 build: { extend(config, { isServer }) { // 仅客户端打包时排除Node内置模块 if (!isServer) { config.node = { fs: 'empty', child_process: 'empty', net: 'empty', tls: 'empty', readline: 'empty' } } } } }
- 区分代码执行环境
- 如果用到谷歌接口的逻辑仅需在服务端运行:把相关代码放到
serverMiddleware、asyncData、fetch等仅服务端执行的逻辑中,不要在客户端生命周期(比如mounted)、客户端组件中调用google-auth-library相关逻辑。 - 如果需要在客户端调用谷歌接口:不要使用服务端版的
google-auth-library和googleapis,改用谷歌官方提供的浏览器端SDK,或者将谷歌接口交互逻辑封装为你自己的后端接口,前端仅调用自有接口,避免泄露服务账号密钥等敏感信息。
内容的提问来源于stack exchange,提问作者Abe Shalash
相关产品推荐
相关产品推荐

