vue-cli 【已解决】 require is not defined 和 exports is not defind

本文记录了一次解决项目中出现的exports未定义错误的过程。通过调整项目配置和环境设置最终定位并解决了问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这个问题是开发最恶心的一个错误,没有之一,明知道用法是对的,它就是会给你报错。
在这里插入图片描述

今天开发翻到一个页面,控制台显示三方包使用使用导入导出语法,浏览器就报错,我的想法是这个东西能用不是很正常吗,为什么你给我抛出错我,于是我叫同时开启这个项目,问下他那边有没有报错,得到回答是没有错误,页面正常显示。

于是我就看babel的配置,把fimraf node_modules 删除所有文件包,挨个对应版本,启动项目还是出现这个错误,最后看eslintrc,看看别人说的env加入node环境,没用,百度一堆没用的答案,忽然觉得这个问题好难排查。

问题记录一下,希望能帮到大家。

如果是exports is not defind 错误
exports is not defind
在项目里面设置它为false即可,具体原因我也不清楚,只是排查结果到这块才发现是这个导致出现的。
在这里插入图片描述

### UniApp Vue3 使用 MQTT 出现 `process is not defined` 的解决方案 在 UniApp 项目中集成 Vue3 MQTT 库时,可能会遇到 `process is not defined` 错误。此问题源于某些库依赖 Node.js 特定的全局对象(如 `process`),而这些对象并未默认存在于浏览器环境中。 #### 修改 Vite 配置文件 对于基于 Vite 构建工具的 UniApp 项目,在 `vite.config.ts` 文件内添加自定义配置来模拟缺失的对象: ```typescript // vite.config.ts import { defineConfig } from 'vite' export default defineConfig({ // ... define: { 'process.env': {}, global: {} }, optimizeDeps: { esbuildOptions: { define: { global: 'globalThis', process: '{}' } } } }) ``` 上述设置通过覆盖默认行为引入必要的 polyfill[^1]。 #### Webpack 插件方式处理 如果采用的是 Webpack 打包方案,则可以在项目的构建配置里加入相应的插件支持: ```javascript // uniapp根目录下的vue.config.js 或 build/webpack.base.conf.js const webpack = require('webpack') module.exports = { configureWebpack: { plugins: [ new webpack.ProvidePlugin({ process: 'process/browser', Buffer: ['buffer', 'Buffer'] }) ] }, chainWebpack(config) { config.module.rule('js') .use('babel-loader') .tap(options => ({ ...options, presets: [...(options.presets || []), '@vue/cli-plugin-babel/preset'], plugins: [['transform-es2015-modules-commonjs']] })) } } ``` 这段代码片段利用了 ProvidePlugin 来自动注入所需的模块实例化语句[^3]。 #### 替代方法:调整应用逻辑 另一种可行的方法是从根本上改变应用程序如何访问环境变量或其他仅限于服务器端的功能。例如,可以考虑将所有涉及敏感数据的操作迁移到后端服务,并通过 API 接口获取所需信息;或者寻找专门为前端设计的支持更好的替代品。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值