微信云开发小程序如何添加npm包,引入vant-weapp后出现[‘vant-XXX‘]:‘@vant/weapp/xxx‘未找到,错误解决

1、传统的微信小程序可以参考官方文档进行引入

Vant Weapp - 轻量、可靠的小程序 UI 组件库

2、微信云开发小程序引入

因为云开发小程序的项目结构发生变化,重要的是 云函数文件夹、小程序项目代码文件夹、 project.config.json配置文件

按照官方文档的引入方式,project.config.json进行如下配置

    "packNpmManually": true,
    "packNpmRelationList": [
      {
        "packageJsonPath": "./package.json",
        "miniprogramNpmDistDir": "./"
      }
    ],

其中packageJsonPath配置对应的是npm包安装生成的的package.json文件路径,如果直接在项目的根目录执行 npm i 进行包安装,会导致node_modules直接和miniprogram文件夹同级,这一配置不会影响项目,因为还没有构建npm,下面我们构建一下看看

在工具栏构建npm之后,会在同级文件生成miniprogram_npm文件夹

再通过左侧的方式引入就会报错无法找到文件目录,报错中可以看到访问路径是/miniprogram/miniprogram_npm/@vant/weapp/search/index

说明以下几点

  • 构建npm后生成新的miniprogram_npm包文件夹存放构建后的包文件
  • 微信小程序获取npm包资源是通过miniprogram_npm包文件夹进行包的访问
  • miniprogramNpmDistDir配置对应的就是miniprogram_npm包文件夹存放的路径
  • @vant/weapp/...对应的访问路径是/miniprogram/miniprogram_npm/

所以要想正确的在云开发的小程序中进行引入需要进行如下操作

1、npm包也就是node_modules安装在项目的根目录/miniprogram/文件夹下都是可以的,但是必须要packageJsonPath配置一致

根目录配置是     "./package.json"

/miniprogram/文件下配置是     "/miniprogram/package.json"

2、miniprogramNpmDistDir配置对应miniprogram_npm包文件夹存放的路径,由于组件引入的访问路径,所以构建npm后该放在/miniprogram/文件路径下

对应配置为     "/miniprogram/"

<think>问题分析: 根据错误信息,问题发生在微信小程序的组件配置文件中。具体来说,在文件 `components/custom-form-modal/index.json` 中,配置了使用 `@vant/weapp` 的 `field` 组件,但是微信开发者工具在多个路径下都没有找到这个组件。 错误信息中列出了搜索路径,括: - 相对于当前组件的路径(`components/custom-form-modal/`下的路径) - 相对于项目根目录的路径(`miniprogram_npm` 目录) 可能的原因: 1. 没有安装 `@vant/weapp` 。 2. 安装的路径不正确,没有放在项目根目录下的 `miniprogram_npm` 文件夹中。 3. 在 `project.config.json` 中没有正确设置 `miniprogram_npm` 的路径(但通常默认就是 `miniprogram_npm`)。 4. 组件路径引用错误解决方案: 1. 确保已经正确安装了 `@vant/weapp`。可以使用 npm 安装: npm i @vant/weapp -S --production 2. 在微信开发者工具中,点击菜单栏的“工具” -> “构建 npm”,将 `@vant/weapp` 构建到 `miniprogram_npm` 目录下。 3. 检查 `project.config.json` 文件,确保 `setting` 中的 `packNpmManually` 和 `packNpmRelationList` 配置正确(如果使用手动构建npm,则需要配置)。 4. 检查组件引用路径是否正确。 在 `index.json` 中引用组件的路径,通常有两种方式: - 绝对路径:从项目根目录开始,例如:`/miniprogram_npm/@vant/weapp/field/index` - 相对路径:但这里我们通常使用绝对路径,因为组件可能被多个地方引用。 但是,在组件的配置文件中,我们也可以使用相对于项目根目录的绝对路径。根据错误信息,搜索路径中含了 `miniprogram_npm` 目录,因此我们可以尝试使用绝对路径。 修改 `components/custom-form-modal/index.json` 文件: 将原来的 `"van-field": "@vant/weapp/field/index"` 改为绝对路径: "van-field": "/miniprogram_npm/@vant/weapp/field/index" 但是,请注意,如果项目配置了自定义的 `miniprogram_npm` 路径,那么需要根据实际路径来写。 另外,还有一种可能是,在构建npm之后,`@vant/weapp` 并没有被正确构建到 `miniprogram_npm` 目录下。因此,请先确保构建npm步骤成功,并且在项目根目录下生成了 `miniprogram_npm` 文件夹,且里面有 `@vant/weapp` 的组件。 如果构建npm后没有生成,可以尝试在 `project.config.json` 中配置: ```json "setting": { "packNpmManually": true, "packNpmRelationList": [ { "packageJsonPath": "./package.json", "miniprogramNpmDistDir": "./" } ] } ``` 但通常,我们不需要手动配置,除非有特殊需求。默认情况下,构建npm会生成在 `miniprogram_npm` 目录下。 如果以上步骤都做了还是不行,可以尝试删除 `miniprogram_npm` 目录,然后重新构建npm。 另外,注意检查 `package.json` 中是否确实有 `@vant/weapp` 的依赖。 步骤总结: 1. 安装依赖:在项目根目录下执行 `npm install @vant/weapp --save` 2. 在微信开发者工具中,点击“工具”->“构建npm”。 3. 修改 `index.json` 中的组件路径为绝对路径:`/miniprogram_npm/@vant/weapp/field/index` 4. 重新编译。 如果问题仍然存在,请检查构建npm是否成功,以及构建后的目录结构是否正确。 注意:在组件的json文件中,路径的写法不需要加扩展名(如`.js`、`.wxml`等),只需要到目录名,然后指定到`index`即可(因为vant的组件都是index.js这样的形式)。 示例修改后的 `index.json`: ```json { "usingComponents": { "van-field": "/miniprogram_npm/@vant/weapp/field/index" } } ``` 如果按照上述步骤操作后仍然错,请检查构建npm后生成的目录结构,确保在 `miniprogram_npm/@vant/weapp/field` 目录下存在 `index.js`、`index.json` 等文件。 如果目录结构正确,那么可能是微信开发者工具缓存问题,可以尝试重启开发者工具。 如果项目使用了TypeScript,还需要注意将 `miniprogram_npm` 加入到 `tsconfig.json` 的 `include` 中,以避免类型错误(但这不是运行时错误)。 由于问题中提到了多个搜索路径,其中含了 `miniprogram_npm` 目录,所以使用绝对路径 `/miniprogram_npm/...` 应该能够被正确解析。 因此,解决方案的核心是:确保npm存在且构建正确,然后使用绝对路径引用。 代码修改示例(index.json):</think>### 问题分析 错误信息表明微信小程序在加载 `@vant/weapp/field` 组件时失败,开发者工具在多个路径下都找不到该组件。核心问题在于 **组件路径引用错误** 或 **npm 未正确构建**。 ### 解决方案 #### 1. 修复组件引用路径(推荐方案) 在 `components/custom-form-modal/index.json` 中,将组件路径改为**绝对路径**(从项目根目录开始): ```json:components/custom-form-modal/index.json { "usingComponents": { "van-field": "/miniprogram_npm/@vant/weapp/field/index" } } ``` #### 2. 检查 npm 构建流程 确保已正确安装并构建 `@vant/weapp`: 1. **安装依赖**(在项目根目录执行): ```bash npm install @vant/weapp ``` 2. **微信开发者工具中构建 npm**: - 点击顶部菜单:工具 → 构建 npm - 确保生成 `miniprogram_npm/@vant/weapp` 目录 #### 3. 检查 `project.config.json` 配置 确认构建配置正确(关键配置): ```json:project.config.json { "setting": { "packNpmManually": true, "packNpmRelationList": [ { "packageJsonPath": "./package.json", "miniprogramNpmDistDir": "./" // 指定 npm 输出目录为项目根目录 } ] } } ``` #### 4. 验证目录结构 构建成功后,检查目录结构应含: ``` miniprogram_npm/ └── @vant └── weapp └── field ├── index.js ├── index.json ├── index.wxml └── index.wxss ``` ### 常见错误原因 1. **路径错误**:使用了相对路径 `@vant/weapp/...` 而非绝对路径 `/miniprogram_npm/@vant/weapp/...` 2. **未构建 npm**:安装依赖后未在开发者工具中执行"构建 npm" 3. **配置缺失**:`project.config.json` 中未开启手动构建配置 4. **缓存问题**:开发者工具未更新最新文件(可尝试重启工具) ### 验证修复 1. 修改 `index.json` 中的组件路径 2. 重新构建 npm 3. 清理缓存:微信开发者工具 → 编译 → 勾选"重新编译" --- ###
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值