uni-app 使用 pnpm 管理依赖发现 build 命令失效,无法启动 dev-server

uni-app 使用 pnpm 管理依赖发现 build 命令失效,无法启动 dev-server

开发环境 版本号 项目创建方式
Windows 10 专业版 19043.1266 2.0.1-34720220422001 CLI

产品分类:uniapp/H5

浏览器平台:Chrome

浏览器版本:Microsoft Edge 94.0.992.38

示例代码:

// vue.config.js  

module.exports = {  
  chainWebpack: (config) => {  
    // symlinks  
    config.resolve.symlinks = false  
  },  
.......  
}
$ 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(R) Core(TM) 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

操作步骤:

$ pnpm dev

预期结果:

正常启动 dev-server

实际结果:

Hyman[@T470P](/user/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](/user/T470P) MINGW64 /e/WorkSpace/h5-welfare (master)  
$  

Hyman[@T470P](/user/T470P) MINGW64 /e/WorkSpace/h5-welfare (master)  
$

更多关于uni-app 使用 pnpm 管理依赖发现 build 命令失效,无法启动 dev-server的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

请问解决了吗?

更多关于uni-app 使用 pnpm 管理依赖发现 build 命令失效,无法启动 dev-server的实战教程也可以访问 https://www.itying.com/category-93-b0.html


在使用 uni-app 开发项目时,如果你使用 pnpm 作为包管理器,可能会遇到 build 命令失效或无法启动 dev-server 的问题。这通常是由于 pnpm 的依赖管理方式与 uni-app 的构建工具不完全兼容所导致的。以下是一些可能的解决方案:

1. 确保 node_modules 正确安装

pnpm 使用符号链接来管理依赖,这可能会导致某些工具找不到依赖。你可以尝试删除 node_modules 目录并重新安装依赖:

rm -rf node_modules
pnpm install

2. 使用 --shamefully-hoist 选项

pnpm 默认不会将依赖提升到根目录,这可能会导致某些工具无法找到依赖。你可以使用 --shamefully-hoist 选项来提升依赖:

pnpm install --shamefully-hoist

3. 检查 uni-app 的依赖版本

确保你使用的 uni-app 版本与 pnpm 兼容。你可以尝试更新 uni-app 和相关依赖:

pnpm update uni-app

4. 使用 npmyarn 作为替代

如果上述方法都无法解决问题,你可以考虑暂时使用 npmyarn 作为包管理器:

# 删除 pnpm 的依赖
rm -rf node_modules

# 使用 npm 安装依赖
npm install

# 或者使用 yarn 安装依赖
yarn install

5. 检查 uni-app 的构建配置

确保你的 uni-app 项目配置正确,特别是 vue.config.jsvite.config.js 文件中的配置。你可以参考官方文档或社区中的配置建议进行调整。

6. 查看错误日志

如果 dev-server 无法启动,查看终端输出的错误日志,通常会有具体的错误信息。根据错误信息进行排查和修复。

7. 使用 pnpmnode-linker 配置

pnpm 提供了 node-linker 配置选项,可以改变依赖的链接方式。你可以尝试在 .npmrc 文件中添加以下配置:

node-linker=hoisted

然后重新安装依赖:

pnpm install

8. 检查 uni-app 的插件兼容性

有些 uni-app 插件可能与 pnpm 不完全兼容。如果你使用了某些插件,尝试暂时禁用它们,看看问题是否依然存在。

9. 使用 pnpm--resolution-only 选项

如果依赖冲突导致问题,你可以尝试使用 pnpm--resolution-only 选项来解决依赖冲突:

pnpm install --resolution-only
回到顶部