dcloudio / dcloudio/uni-app

No matching export in "node_modules/xxx/vue/dist/vue.runtime.esm-bundler.js" for import "isInSSRComponentSetup"

Open
#5,769 1 comment 0 reactions 0 assignees View on GitHub
Dominant language
JavaScript
Stars
41.6k
Forks
3.7k
Avg merge
7h 6m
Merged PRs (30d)
6

Description

### 发行方式

None

### 具体平台

App 端,在编译阶段报错

### 开发环境

macOS

### 项目创建方式

CLI命令行

### 依赖版本

HBuilderX:4.76.2025073103-alpha

uniapp 相关依赖版本:

```json
{
"name": "uniapp-simple-demo",
"version": "0.0.1",
"scripts": {
"dev:app-plus": "uni -p app-plus",
"build:app-plus": "uni build -p app-plus"
},
"dependencies": {
"@dcloudio/uni-app": "3.0.0-4070620250821001",
"@dcloudio/uni-app-harmony": "3.0.0-4070620250821001",
"@dcloudio/uni-app-plus": "3.0.0-4070620250821001",
"@dcloudio/uni-components": "3.0.0-4070620250821001",
"@dcloudio/uni-h5": "3.0.0-4070620250821001",
"@dcloudio/uni-mp-alipay": "3.0.0-4070620250821001",
"@dcloudio/uni-mp-baidu": "3.0.0-4070620250821001",
"@dcloudio/uni-mp-jd": "3.0.0-4070620250821001",
"@dcloudio/uni-mp-kuaishou": "3.0.0-4070620250821001",
"@dcloudio/uni-mp-lark": "3.0.0-4070620250821001",
"@dcloudio/uni-mp-qq": "3.0.0-4070620250821001",
"@dcloudio/uni-mp-toutiao": "3.0.0-4070620250821001",
"@dcloudio/uni-mp-weixin": "3.0.0-4070620250821001",
"@dcloudio/uni-mp-xhs": "3.0.0-4070620250821001",
"@dcloudio/uni-quickapp-webview": "3.0.0-4070620250821001",
"vue": "3.4.21",
"vue-i18n": "^9.1.9"
},
"devDependencies": {
"@dcloudio/types": "3.4.21",
"@dcloudio/uni-automator": "3.0.0-4070620250821001",
"@dcloudio/uni-cli-shared": "3.0.0-4070620250821001",
"@dcloudio/uni-stacktracey": "3.0.0-4070620250821001",
"@dcloudio/vite-plugin-uni": "3.0.0-4070620250821001",
"@vue/runtime-core": "3.4.21",
"vite": "5.2.8"
}
}
```

### 问题描述

在 App 端使用 [renderjs](https://uniapp.dcloud.net.cn/tutorial/renderjs.html),发现在 renderjs script 块中导入 `@dcloudio/uni-app` 就会报错:

```vue

import { formatAppLog } from '@dcloudio/uni-app'
// ...

```

> 完整示例看 [uniapp-simple-demo](https://github.com/tofrankie/uniapp-simple-demo/tree/renderjs)

```shell
$ pnpm dev:app-plus

> uniapp-simple-demo@0.0.1 dev:app-plus /Users/frankie/Web/Git/uniapp-simple-demo
> uni -p app-plus

请注意运行模式下,因日志输出、sourcemap 以及未压缩源码等原因,性能和包体积,均不及发行模式。
编译器版本:4.76(vue3)
正在编译中...
✘ [ERROR] No matching export in "node_modules/.pnpm/vue@3.4.21/node_modules/vue/dist/vue.runtime.esm-bundler.js" for import "isInSSRComponentSetup"

node_modules/.pnpm/@dcloudio+uni-app@3.0.0-4070620250821001_@dcloudio+types@3.4.21_postcss@8.5.6_rollup@4.50.2_vue@3.4.21/node_modules/@dcloudio/uni-app/dist/uni-app.es.js:1:46:
1 │ import { shallowRef, ref, getCurrentInstance, isInSSRComponentSetup, injectHook } from 'vue';
╵ ~~~~~~~~~~~~~~~~~~~~~

✘ [ERROR] No matching export in "node_modules/.pnpm/vue@3.4.21/node_modules/vue/dist/vue.runtime.esm-bundler.js" for import "injectHook"

node_modules/.pnpm/@dcloudio+uni-app@3.0.0-4070620250821001_@dcloudio+types@3.4.21_postcss@8.5.6_rollup@4.50.2_vue@3.4.21/node_modules/@dcloudio/uni-app/dist/uni-app.es.js:1:69:
1 │ import { shallowRef, ref, getCurrentInstance, isInSSRComponentSetup, injectHook } from 'vue';
╵ ~~~~~~~~~~

[plugin:uni:app-vue-renderjs] Build failed with 2 errors:
node_modules/.pnpm/@dcloudio+uni-app@3.0.0-4070620250821001_@dcloudio+types@3.4.21_postcss@8.5.6_rollup@4.50.2_vue@3.4.21/node_modules/@dcloudio/uni-app/dist/uni-app.es.js:1:46: ERROR: No matching export in "node_modules/.pnpm/vue@3.4.21/node_modules/vue/dist/vue.runtime.esm-bundler.js" for import "isInSSRComponentSetup"
node_modules/.pnpm/@dcloudio+uni-app@3.0.0-4070620250821001_@dcloudio+types@3.4.21_postcss@8.5.6_rollup@4.50.2_vue@3.4.21/node_modules/@dcloudio/uni-app/dist/uni-app.es.js:1:69: ERROR: No matching export in "node_modules/.pnpm/vue@3.4.21/node_modules/vue/dist/vue.runtime.esm-bundler.js" for import "injectHook"
at pages/index/index.vue:1:0
```

uni-app.es.js 中 import 了 vue 的 isInSSRComponentSetup 和 injectHook,但是 vue 指向了 vue.runtime.esm-bundler.js,它并没有导出这两个方法,所以报错了~

社区上与 isInSSRComponentSetup 和 injectHook 报错的问题还挺多的,[here](https://ask.dcloud.net.cn/search/q-aXNJblNTUkNvbXBvbmVudFNldHVw#all)

### 重现步骤

按以下步骤,编译就能复现:

```shell
$ git clone -b renderjs https://github.com/tofrankie/uniapp-simple-demo.git

$ pnpm install

$ pnpm dev:app-plus
```

### 期望行为

1. 在 renderjs script 内导入 @dcloudio/uni-app(且允许在 renderjs 中使用的)方法可以正常编译。

```vue

import { formatAppLog } from '@dcloudio/uni-app' // ✅
// ...

```

> PS: 这里 formatAppLog 只是为了举例说明问题,更多的用法可能是第二种。

2. 在 renderjs script 内导入其他模块方法(以尽可能复用逻辑),该模块又导入了 @dcloudio/uni-app,也可以正常编译。

```vue

import { methodA } from './utils' // ✅
// ...

```

```js
// utils.js
import { formatAppLog } from '@dcloudio/uni-app'

export function methodA() {
// do something
}

export function methodB() {
formatAppLog('warn', 'index.vue', 'test')
}
```

### 实际行为

这样使用编译报错(报错信息前面已列举,这里就不重复了)

```vue

import { formatAppLog } from '@dcloudio/uni-app' // ❌
// ...

```

完整 renderjs 使用示例请看 [index.vue](https://github.com/tofrankie/uniapp-simple-demo/blob/renderjs/src/pages/index/index.vue)

### 截图或录屏

_No response_

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.