微信小程序引入vant报错

By gavin

步骤一 通过 npm 安装

# 通过 npm 安装 npm i @vant/weapp -S –production

步骤二 修改 app.json

将 app.json 中的 "style": "v2" 去除,小程序的新版基础组件强行加上了许多样式,难以覆盖,不关闭将造成部分组件样式混乱。

步骤三 修改 project.config.json

开发者工具创建的项目,miniprogramRoot 默认为 miniprogrampackage.json 在其外部,npm 构建无法正常工作。

需要手动在 project.config.json 内添加如下配置,使开发者工具可以正确索引到 npm 依赖的位置。

{
  ...
  <span class="hljs-attr">"setting"</span>: {
    ...
    <span class="hljs-attr">"packNpmManually"</span>: <span class="hljs-literal">true</span>,
    <span class="hljs-attr">"packNpmRelationList"</span>: [
      {
        <span class="hljs-attr">"packageJsonPath"</span>: <span class="hljs-string">"./package.json"</span>,
        <span class="hljs-attr">"miniprogramNpmDistDir"</span>: <span class="hljs-string">"./miniprogram/"</span>
      }
    ]
  }
}

注意: 由于目前新版开发者工具创建的小程序目录文件结构问题,npm构建的文件目录为miniprogram_npm,并且开发工具会默认在当前目录下创建miniprogram_npm的文件名,所以新版本的miniprogramNpmDistDir配置为’./’即可

步骤四 构建 npm 包

打开微信开发者工具,点击 工具 -> 构建 npm,并勾选 使用 npm 模块 选项,构建完成后,即可引入组件。

步骤五 typescript 支持

如果你使用 typescript 开发小程序,还需要做如下操作,以获得顺畅的开发体验。

安装 miniprogram-api-typings

<span class="hljs-comment"># 通过 npm 安装</span>
npm i -D miniprogram-api-typings

<span class="hljs-comment"># 通过 yarn 安装</span>
yarn add -D miniprogram-api-typings

在 tsconfig.json 中增加如下配置,以防止 tsc 编译报错。

请将path/to/node_modules/@vant/weapp修改为项目的 node_modules 中 @vant/weapp 所在的目录。

{
  ...
  <span class="hljs-attr">"compilerOptions"</span>: {
    ...
    <span class="hljs-attr">"baseUrl"</span>: <span class="hljs-string">"."</span>,
    <span class="hljs-attr">"types"</span>: [<span class="hljs-string">"miniprogram-api-typings"</span>],
    <span class="hljs-attr">"paths"</span>: {
      <span class="hljs-attr">"@vant/weapp/*"</span>: [<span class="hljs-string">"path/to/node_modules/@vant/weapp/dist/*"</span>]
    },
    <span class="hljs-attr">"lib"</span>: [<span class="hljs-string">"ES6"</span>]
  }
}

使用

引入组件

以 Button 组件为例,只需要在app.jsonindex.json中配置 Button 对应的路径即可。

所有组件文档中的引入路径均以 npm 安装为例,如果你是通过下载源代码的方式使用 @vant/weapp,请将路径修改为项目中 @vant/weapp 所在的目录。

<span class="hljs-comment">// 通过 npm 安装</span>
<span class="hljs-comment">// app.json</span>
<span class="hljs-string">"usingComponents"</span>: {
  <span class="hljs-attr">"van-button"</span>: <span class="hljs-string">"@vant/weapp/button/index"</span>
}

<span class="hljs-comment">// 通过下载源码使用 es6版本</span>
<span class="hljs-comment">// app.json</span>
<span class="hljs-string">"usingComponents"</span>: {
  <span class="hljs-attr">"van-button"</span>: <span class="hljs-string">"path/to/@vant/weapp/dist/button/index"</span>
}

<span class="hljs-comment">// 通过下载源码使用 es5版本</span>
<span class="hljs-comment">// app.json</span>
<span class="hljs-string">"usingComponents"</span>: {
  <span class="hljs-attr">"van-button"</span>: <span class="hljs-string">"path/to/@vant/weapp/lib/button/index"</span>
}

引入后报错,如图

修改路径

“usingComponents”: { “van-button”: “/miniprogram_npm/vant-weapp/button/index” }