uni-app Error common/side-channel.js is not defined require args is side-channel require依赖报错

uni-app Error common/side-channel.js is not defined require args is side-channel require依赖报错

开发环境 版本号 项目创建方式
Windows 11 HBuilderX
产品分类:uniapp/App

PC开发环境操作系统:Windows

HBuilderX类型:正式

HBuilderX版本号:4.45

手机系统:Android

手机系统版本号:Android 14

手机厂商:小米

手机机型:Redmi K60

页面类型:vue

vue版本:vue3

打包方式:离线

项目创建方式:HBuilderX

### 示例代码:

```js
<template>  
    <view class="title">{{title}}</view>  
</template>  

<script>  
import qs from 'qs';  

export default {  
    data() {  
        const stringify = qs.stringify({  
            a: [1, 2, 3]  
        }, {  
            arrayFormat: 'repeat',  
        })  
        console.log()  
        return {  
            title: stringify  
        }  
    },  
    onLoad() {  

    },  
    methods: {  

    }  
}  
</script>  

操作步骤:

正常版本:

"[@dcloudio](/user/dcloudio)/vite-plugin-uni": "3.0.0-alpha-4010920240607001"

异常版本:

"[@dcloudio](/user/dcloudio)/vite-plugin-uni": "3.0.0-alpha-4020120240617001"

预期结果:

预期正常启动

实际结果:

真机报错:

18:08:23.992 [vite]: Rollup failed to resolve import "qs" from "C:/Users/yfmei/Documents/HBuilderProjects/test-pnpm-vite-require/pages/index/index.vue".
18:08:24.031 This is most likely unintended because it can break your application at runtime.
18:08:24.070 If you do want to externalize this module explicitly add it to
18:08:24.107 `build.rollupOptions.external`

启动白屏,报错:Error: module ‘common/side-channel.js’ is not defined, require args is ‘side-channel’。

bug描述:

vite-plugin-uni

h5 报错

X [ERROR] Could not resolve "side-channel"  
node_modules/qs/lib/stringify.js:3:29:  
  3 │ var getSideChannel = require('side-channel');  
    ╵                              ~~~~~~~~~~~~~~  

You can mark the path “side-channel” as external to exclude it from the bundle, which will remove this error and leave the unresolved path in the bundle. You can also surround this “require” call with a try/catch block to handle this failure at run-time instead of bundle-time.

真机报错

3.0.0-alpha-4010920240607001 之后的版本,从 3.0.0-alpha-4020120240617001 开始,无法使用含有 require 加载的第三方包。这里以 qs 举例,qs 依赖 side-channel:  
18:31:12.634 ​"side-channel" is imported by "
18:31:12.664 ​No name was provided for external module "side-channel" in "output.globals" – guessing "require$$0".​  
18:31:18.090 应用【test-pnpm-vite-require】已启动
18:31:18.306 reportJSException &gt;&gt;&gt;&gt; exception function:createInstanceContext, exception:white screen cause create instanceContext failed,check js stack -&gt;Uncaught ReferenceError: require$$0 is not defined
at  (app-service.js:860:4)  

测试后定位到问题来自 vite-plugin-uni,相关代码参考附件。希望可以通过开关或者命令行参数控制,而不是强制限制。


![示例图片](https://www.itying.com/uniimg.php?url=https://img-cdn-tc.dcloud.net.cn/uploads/questions/20250625/7997f1ed816f9f5008b68d631a548265.jpg)

更多关于uni-app Error common/side-channel.js is not defined require args is side-channel require依赖报错的实战教程也可以访问 https://www.itying.com/category-93-b0.html

8 回复

您好,可以发下复现demo嘛,我排查下

更多关于uni-app Error common/side-channel.js is not defined require args is side-channel require依赖报错的实战教程也可以访问 https://www.itying.com/category-93-b0.html


demo 已上传,package.json 是有问题的依赖,package-correct.json 是正常版本

demo 已上传

有没有试过其他的包管理器,比如yarn,会不会产生这个问题。

回复 DCloud_UNI_JBB: 应该不会,但这个问题,是官方改出来的问题。。。应该兼容才对

你在根目录下面创建一个 .npmrc 文件,里面 写 public-hoist-pattern=*,重新安装下依赖,再运行就没问题了。这个问题我跟同事沟通下,看怎么解决比较好。

有结论了吗?

这是一个由 @dcloudio/vite-plugin-uni 版本更新导致的模块解析问题。从 3.0.0-alpha-4020120240617001 开始,插件对含有 require 语句的第三方包(如 qs)支持出现了兼容性问题。

问题分析:

  1. qs 包内部使用了 require('side-channel') 这种 CommonJS 导入方式
  2. 新版本 vite-plugin-uni 在构建时未能正确处理这种依赖关系
  3. 导致 side-channel 模块在真机运行时未被正确注入,出现 require$$0 is not defined 错误

解决方案:

  1. 临时回退版本:将 @dcloudio/vite-plugin-uni 暂时回退到 3.0.0-alpha-4010920240607001
  2. 配置外部依赖:在 vite.config.js 中添加:
export default defineConfig({
  build: {
    rollupOptions: {
      external: ['side-channel'],
      output: {
        globals: {
          'side-channel': 'require$$0'
        }
      }
    }
  }
})
回到顶部