uni-app uni-build 是否支持 pnpm 管理依赖,使用 pnpm 后发现 build 命令失效
uni-app uni-build 是否支持 pnpm 管理依赖,使用 pnpm 后发现 build 命令失效
| 信息类别 | 详情 |
|---|---|
| 产品分类 | uniapp/App |
| PC开发环境操作系统 | Windows |
| PC开发环境操作系统版本号 | macOS Big Sur 11.2.3 |
| 手机系统 | Android |
| 手机系统版本号 | Android 12 |
| 手机厂商 | 小米 |
| 手机机型 | MI 8 |
| 页面类型 | nvue |
| 打包方式 | 云端 |
| 项目创建方式 | CLI |
| CLI版本号 | 2.0.0-30720210122001 |
bug描述:
通过 pnpm install 安装依赖
执行 pnpm run build:app-plus 控制台无反应
> hbb_app@2.2.20 build:app-plus /Users/demo/projects/native_app
> cross-env NODE_ENV=production UNI_PLATFORM=app-plus vue-cli-service uni-build
操作步骤:
新建空白项目,使用 pnpm 安装 cli项目依赖
预期结果:
能正常build
实际结果:
build 命令无响应
更多关于uni-app uni-build 是否支持 pnpm 管理依赖,使用 pnpm 后发现 build 命令失效的实战教程也可以访问 https://www.itying.com/category-93-b0.html
问题确认,已加分
最新的 alpha 版已经修复。
更多关于uni-app uni-build 是否支持 pnpm 管理依赖,使用 pnpm 后发现 build 命令失效的实战教程也可以访问 https://www.itying.com/category-93-b0.html
真的是修复了吗?刚刚试了pnpm又有warn
运行
回复 1***@qq.com: 说明你装错了版本,手动装一下最新的 alpha 版
回复 1***@qq.com: 重新装一下,2.0.0 是错误的版本
@DCloud_UNI_GSQ
刚刚vue create -p dcloudio/uni-preset-vue#alpha my-alpha-project创建的项目的 package.json 这下面所有的依赖都是 ^2.0.0 难道都是要手动去安装更新吗?
{
“name”: “my-alpha-project”,
“version”: “0.1.0”,
“private”: true,
“dependencies”: {
“@dcloudio/uni-app-plus”: “^2.0.0”,
“@dcloudio/uni-h5”: “^2.0.0”,
“@dcloudio/uni-helper-json”: “*”,
“@dcloudio/uni-i18n”: “^2.0.0”,
“@dcloudio/uni-mp-360”: “^2.0.0”,
“@dcloudio/uni-mp-alipay”: “^2.0.0”,
“@dcloudio/uni-mp-baidu”: “^2.0.0”,
“@dcloudio/uni-mp-kuaishou”: “^2.0.0”,
“@dcloudio/uni-mp-qq”: “^2.0.0”,
“@dcloudio/uni-mp-toutiao”: “^2.0.0”,
“@dcloudio/uni-mp-vue”: “^2.0.0”,
“@dcloudio/uni-mp-weixin”: “^2.0.0”,
“@dcloudio/uni-quickapp-native”: “^2.0.0”,
“@dcloudio/uni-quickapp-webview”: “^2.0.0”,
“@dcloudio/uni-stat”: “^2.0.0”,
“@vue/shared”: “^3.0.0”,
“core-js”: “^3.6.5”,
“flyio”: “^0.6.2”,
“regenerator-runtime”: “^0.12.1”,
“vue”: “^2.6.11”,
“vue-class-component”: “^6.3.2”,
“vue-property-decorator”: “^8.0.0”,
“vuex”: “^3.2.0”
}
}
npm run info 的信息提供一下
3.2.15 开始编译了,但是有其他问题,看着像路径解析问题
❯ pnpm run info
hbb_app@2.2.21 info /Users/hbb-app
node node_modules/@dcloudio/vue-cli-plugin-uni/commands/info.js
uni-app v3.2.15
uni-app cli v2.0.0-32920211119001
Environment Info:
System:
OS: macOS 12.0.1
CPU: (12) x64 Intel® Core™ i7-9750H CPU @ 2.60GHz
Binaries:
Node: 16.13.0 - /usr/local/bin/node
Yarn: 1.22.17 - /usr/local/bin/yarn
npm: 8.1.0 - /usr/local/bin/npm
Browsers:
Chrome: 95.0.4638.69
Firefox: Not Found
Safari: 15.1
npmPackages:
@dcloudio/types: ^2.5.8 => 2.5.13
@dcloudio/uni-app-plus: 2.0.0-32920211119001 => 2.0.0-32920211119001
@dcloudio/uni-cli-i18n: 2.0.0-32920211119001 => 2.0.0-32920211119001
@dcloudio/uni-cli-shared: 2.0.0-32920211119001 => 2.0.0-32920211119001
@dcloudio/uni-h5: 2.0.0-32920211119001 => 2.0.0-32920211119001
@dcloudio/uni-helper-json: ^1.0.13 => 1.0.13
@dcloudio/uni-i18n: 2.0.0-32920211119001 => 2.0.0-32920211119001
@dcloudio/uni-migration: 2.0.0-32920211119001 => 2.0.0-32920211119001
@dcloudio/uni-mp-weixin: 2.0.0-32920211119001 => 2.0.0-32920211119001
@dcloudio/uni-stat: 2.0.0-32920211119001 => 2.0.0-32920211119001
@dcloudio/uni-template-compiler: 2.0.0-32920211119001 => 2.0.0-32920211119001
@dcloudio/uni-ui: ^1.3.9 => 1.4.7
@dcloudio/vue-cli-plugin-hbuilderx: 2.0.0-32920211119001 => 2.0.0-32920211119001
@dcloudio/vue-cli-plugin-uni: 2.0.0-32920211119001 => 2.0.0-32920211119001
@dcloudio/vue-cli-plugin-uni-optimize: 2.0.0-32920211119001 => 2.0.0-32920211119001
@dcloudio/webpack-uni-mp-loader: 2.0.0-32920211119001 => 2.0.0-32920211119001
@dcloudio/webpack-uni-pages-loader: 2.0.0-32920211119001 => 2.0.0-32920211119001
@vue/cli-plugin-babel: ~4.5.0 => 4.5.15
@vue/cli-service: ~4.5.0 => 4.5.15
eslint-plugin-vue: ^7.15.2 => 7.20.0
vue: ^2.6.11 => 2.6.14
vue-eslint-parser: 7.11.0
vue-template-compiler: ^2.6.14 => 2.6.14
vuex: ^3.6.0 => 3.6.2
vuex-persistedstate: ^3.0.0 => 3.2.1
npmGlobalPackages:
@vue/cli: Not Found
15:51:17.015 项目 ‘hbb-app’ 开始编译…
15:51:17.968 编译器版本:3.2.15(v3)看:https://ask.dcloud.net.cn/article/36599。
15:51:17.972 请注意运行模式下,因日志输出、sourcemap以及未压缩源码等原因,性能和包体积,均不及发行模式。
15:51:18.091 正在编译中…
15:51:18.820 ERROR Error: Cannot find module ‘@vue/babel-preset-app’
15:51:18.824 Require stack:
15:51:18.824 - /Users/hbb-app/node_modules/.pnpm/@babel+core@7.16.0/node_modules/@babel/core/lib/config/files/plugins.js
15:51:18.830 - /Users/hbb-app/node_modules/.pnpm/@babel+core@7.16.0/node_modules/@babel/core/lib/config/files/index.js
15:51:18.830 - /Users/hbb-app/node_modules/.pnpm/@babel+core@7.16.0/node_modules/@babel/core/lib/index.js
15:51:18.835 - /Users/hbb-app/node_modules/.pnpm/@vue+cli-plugin-babel@4.5.15_4c1e5ebbf041a85328f9984e4ede8f8a/node_modules/@vue/cli-plugin-babel/index.js
15:51:18.835 - /Users/hbb-app/node_modules/.pnpm/@vue+cli-service@4.5.15_6ea0837a110d10d5b4a7839bd1d980f3/node_modules/@vue/cli-service/lib/Service.js
15:51:18.839 - /Users/hbb-app/node_modules/.pnpm/@vue+cli-service@4.5.15_6ea0837a110d10d5b4a7839bd1d980f3/node_modules/@vue/cli-service/bin/vue-cli-service.js
15:51:18.843 Error: Cannot find module ‘@vue/babel-preset-app’
15:51:18.847 Require stack:
15:51:18.847 - /Users/hbb-app/node_modules/.pnpm/@babel+core@7.16.0/node_modules/@babel/core/lib/config/files/plugins.js
15:51:18.851 - /Users/hbb-app/node_modules/.pnpm/@babel+core@7.16.0/node_modules/@babel/core/lib/config/files/index.js
15:51:18.854 - /Users/hbb-app/node_modules/.pnpm/@babel+core@7.16.0/node_modules/@babel/core/lib/index.js
15:51:18.857 - /Users/hbb-app/node_modules/.pnpm/@vue+cli-plugin-babel@4.5.15_4c1e5ebbf041a85328f9984e4ede8f8a/node_modules/@vue/cli-plugin-babel/index.js
15:51:18.857 - /Users/hbb-app/node_modules/.pnpm/@vue+cli-service@4.5.15_6ea0837a110d10d5b4a7839bd1d980f3/node_modules/@vue/cli-service/lib/Service.js
15:51:18.861 - /Users/hbb-app/node_modules/.pnpm/@vue+cli-service@4.5.15_6ea0837a110d10d5b4a7839bd1d980f3/node_modules/@vue/cli-service/bin/vue-cli-service.js
15:51:18.865 at Function.Module._resolveFilename (internal/modules/cjs/loader.js:815:15)
15:51:18.869 at Function.Module._resolveFilename (/Users/hbb-app/node_modules/.pnpm/module-alias@2.2.2/node_modules/module-alias/index.js:49:29)
15:51:18.873 at resolve (internal/modules/cjs/helpers.js:80:19)
15:51:18.877 at resolveStandardizedName (/Users/hbb-app/node_modules/.pnpm/@babel+core@7.16.0/node_modules/@babel/core/lib/config/files/plugins.js:111:7)
15:51:18.878 at resolvePreset (/Users/hbb-app/node_modules/.pnpm/@babel+core@7.16.0/node_modules/@babel/core/lib/config/files/plugins.js:59:10)
15:51:18.883 at loadPreset (/Users/hbb-app/node_modules/.pnpm/@babel+core@7.16.0/node_modules/@babel/core/lib/config/files/plugins.js:78:20)
15:51:18.887 at loadPreset.next (<anonymous>)
15:51:18.890 at createDescriptor (/Users/hbb-app/node_modules/.pnpm/@babel+core@7.16.0/node_modules/@babel/core/lib/config/config-descriptors.js:187:16)
15:51:18.894 at createDescriptor.next (<anonymous>)
15:51:18.898 at evaluateSync (/Users/hbb-app/node_modules/.pnpm/gensync@1.0.0-beta.2/node_modules/gensync/index.js:251:28)
15:51:18.901 at /Users/hbb-app/node_modules/.pnpm/gensync@1.0.0-beta.2/node_modules/gensync/index.js:31:34
15:51:18.904 at Array.map (<anonymous>)
15:51:18.907 at Function.sync (/Users/hbb-app/node_modules/.pnpm/gensync@1.0.0-beta.2/node_modules/gensync/index.js:31:22)
15:51:18.907 at Function.all (/Users/hbb-app/node_modules/.pnpm/gensync@1.0.0-beta.2/node_modules/gensync/index.js:210:24)
15:51:18.911 at Generator.next (<anonymous>)
15:51:18.914 at createDescriptors (/Users/hbb-app/node_modules/.pnpm/@babel+core@7.16.0/node_modules/@babel/core/lib/config/config-descriptors.js:142:41)
是新建的空工程吗?如果不是还请再提供一下项目信息
在 tsconfig.json 里面设置 “preserveSymlinks”: true。如果没有使用 typescript 可忽略。
{
“compilerOptions”: {
“preserveSymlinks”: true,
…
}
}
配置 webpack。下面示例是在 vue.config.js 文件里配置,chainWebpack 和 configureWebpack 二选一即可。
module.exports = {
chainWebpack: (config) => {
// symlinks
config.resolve.symlinks = false;
},
configureWebpack: {
resolve: {
symlinks: false,
},
},
};
示例项目
如果配置 webpack 就正常了,没必要设置 “preserveSymlinks”: true。
最新的版本还是有这个问题
Hyman@T470P MINGW64 /e/WorkSpace/h5-welfare (master)
$ pnpm dev
h5-welfare@0.1.0 dev E:\WorkSpace\h5-welfare
cross-env NODE_ENV=development UNI_PLATFORM=h5 vue-cli-service uni-serve
请注意运行模式下,因日志输出、sourcemap以及未压缩源码等原因,性能和包体积,均不及发行模式。
Hyman@T470P MINGW64 /e/WorkSpace/h5-welfare (master)
$
$ pnpm run info
h5-welfare@0.1.0 info E:\WorkSpace\h5-welfare
node node_modules/@dcloudio/vue-cli-plugin-uni/commands/info.js
uni-app v3.4.7
uni-app cli v2.0.1-34720220422001
Environment Info:
System:
OS: Windows 10
CPU: (4) x64 Intel® Core™ i5-7300HQ CPU @ 2.50GHz
Binaries:
Node: 16.14.2 - D:\Develop\nodejs\node.EXE
Yarn: Not Found
npm: 8.5.0 - D:\Develop\nodejs\npm.CMD
Browsers:
Edge: 44.19041.1266.0
npmPackages:
@dcloudio/types: * => 2.6.4
@dcloudio/uni-app-plus: ^2.0.1-34720220422001 => 2.0.1-34720220422001
@dcloudio/uni-automator: ^2.0.1-34720220422001 => 2.0.1-34720220422001
@dcloudio/uni-cli-i18n: ^2.0.1-34620220419001 => 2.0.1-34620220419001
@dcloudio/uni-cli-shared: ^2.0.1-34720220422001 => 2.0.1-34720220422001
@dcloudio/uni-h5: ^2.0.1-34720220422001 => 2.0.1-34720220422001
@dcloudio/uni-helper-json: * => 1.0.13
@dcloudio/uni-migration: ^2.0.1-34720220422001 => 2.0.1-34720220422001
@dcloudio/uni-mp-360: ^2.0.1-34720220422001 => 2.0.1-34720220422001
@dcloudio/uni-mp-alipay: ^2.0.1-34720220422001 => 2.0.1-34720220422001
@dcloudio/uni-mp-baidu: ^2.0.1-34720220422001 => 2.0.1-34720220422001
@dcloudio/uni-mp-qq: ^2.0.1-34720220422001 => 2.0.1-34720220422001
@dcloudio/uni-mp-toutiao: ^2.0.1-34720220422001 => 2.0.1-34720220422001
@dcloudio/uni-mp-vue: ^2.0.1-34720220422001 => 2.0.1-alpha-34620220415002
@dcloudio/uni-mp-weixin: ^2.0.1-34720220422001 => 2.0.1-34720220422001
@dcloudio/uni-quickapp-native: ^2.0.1-34720220422001 => 2.0.1-alpha-34620220415002
@dcloudio/uni-quickapp-webview: ^2.0.1-34720220422001 => 2.0.1-34720220422001
@dcloudio/uni-stat: ^2.0.1-34720220422001 => 2.0.1-34720220422001
@dcloudio/uni-template-compiler: ^2.0.1-34720220422001 => 2.0.1-34720220422001
@dcloudio/vue-cli-plugin-hbuilderx: ^2.0.1-34720220422001 => 2.0.1-34720220422001
@dcloudio/vue-cli-plugin-uni: ^2.0.1-34720220422001 => 2.0.1-34720220422001
@dcloudio/vue-cli-plugin-uni-optimize: ^2.0.1-34720220422001 => 2.0.1-34720220422001
@dcloudio/webpack-uni-mp-loader: ^2.0.1-34720220422001 => 2.0.1-34720220422001
@dcloudio/webpack-uni-pages-loader: ^2.0.1-34720220422001 => 2.0.1-34720220422001
@hap-toolkit/dsl-vue: 0.6.13
@vue/babel-helper-vue-jsx-merge-props: 1.2.1
@vue/babel-helper-vue-transform-on: 1.0.2
@vue/babel-plugin-jsx: 1.1.1
@vue/babel-plugin-transform-vue-jsx: 1.2.1
@vue/babel-preset-app: 4.5.17
@vue/babel-preset-jsx: 1.2.4
@vue/babel-sugar-composition-api-inject-h: 1.2.1
@vue/babel-sugar-composition-api-render-instance: 1.2.4
@vue/babel-sugar-functional-vue: 1.2.2
@vue/babel-sugar-inject-h: 1.2.2
@vue/babel-sugar-v-model: 1.2.3
@vue/babel-sugar-v-on: 1.2.3
@vue/cli-overlay: 4.5.17
@vue/cli-plugin-babel: ~4.5.0 => 4.5.17
@vue/cli-plugin-router: 4.5.17
@vue/cli-plugin-vuex: 4.5.17
@vue/cli-service: ~4.5.0 => 4.5.17
@vue/cli-shared-utils: 4.5.17
@vue/component-compiler-utils: 3.3.0
@vue/preload-webpack-plugin: 1.1.2
@vue/shared: ^3.0.0-rc.4 => 3.2.33
@vue/web-component-wrapper: 1.3.0
vue: ^2.6.11 => 2.6.14
vue-clipboard2: ^0.3.1 => 0.3.3
vue-hot-reload-api: 2.3.4
vue-lazyload: ^1.3.3 => 1.3.3
vue-loader: 15.9.8 (15.9.8)
vue-router: ^3.4.3 => 3.5.3
vue-style-loader: 4.1.3
vue-template-compiler: ^2.6.11 => 2.6.14
vue-template-es2015-compiler: 1.9.1
vuex: ^3.2.0 => 3.6.2
npmGlobalPackages:
@vue/cli: Not Found
是的,uni-app 官方 CLI 项目支持使用 pnpm 管理依赖。你遇到的问题 pnpm run build:app-plus 无响应,通常是由于 pnpm 的依赖结构(node_modules 为符号链接)与部分构建工具或脚本的兼容性问题导致的。
核心原因与解决方案:
-
检查
package.json中的脚本命令 确保你的build:app-plus脚本命令正确引用了vue-cli-service。在 pnpm 环境下,有时需要明确指定可执行文件的路径。可以尝试修改为:"build:app-plus": "cross-env NODE_ENV=production UNI_PLATFORM=app-plus ./node_modules/.bin/vue-cli-service uni-build"或使用 pnpm 自带的
exec命令:"build:app-plus": "pnpm exec cross-env NODE_ENV=production UNI_PLATFORM=app-plus vue-cli-service uni-build" -
清理并重新安装依赖 删除
node_modules文件夹和pnpm-lock.yaml文件,然后重新执行pnpm install。这可以排除因依赖链接不完整或缓存导致的构建问题。 -
检查 pnpm 版本 使用较新版本的 pnpm(建议 v7 或 v8),它们对工具链的兼容性更好。可以通过
pnpm -v查看当前版本,并使用pnpm add -g pnpm升级。 -
检查 Node.js 版本 确保 Node.js 版本符合 uni-app 的要求(建议 LTS 版本,如 v16、v18)。不兼容的 Node.js 版本可能导致构建进程静默失败。
-
尝试本地打包 你提到打包方式为“云端”,但为了排查问题,可以临时切换到本地打包(在
manifest.json中配置),以排除云端环境与 pnpm 的特定兼容性问题。
如果以上步骤仍无法解决,可以检查终端是否有隐藏的错误日志,或尝试在命令前添加 DEBUG=* 环境变量来输出更详细的调试信息。例如:
DEBUG=* pnpm run build:app-plus

