微信小程序使用npm模块
小程序使用npm模块以及GB2312解码
使用npm模块
今天的一个项目中,小程序从服务器得到的数据是16进制数据包,形似CE C2 B6 C8 3A 32 37 20 43 2C CA AA B6 C8 3A 34 38 20 25 20 0D 0A,研究后发现这个数据包使用的是GB2312的编码,而javascript是没办法直接解码GB2312的,于是我们需要使用npm导入第三方包了,期间遇到了一些坑。
首先先在小程序的目录下执行了npm init,初始化了项目,然后执行npm search gb2312发现并使用了如下模块fast-gbk | encode and decode… | =song940 | 2019-06-17 | 0.0.1 | gbk。使用npm install --production fast-gbk安装该模块,但是光做到这里还没办法在项目中使用该模块。我们还需要在微信开发者工具的设置->项目设置里勾选使用npm模块,之后还需要点击工具->构建npm。之后开发者工具会进行如下操作:
首先 node_modules 目录不会参与编译、上传和打包中,所以小程序想要使用 npm 包必须走一遍“构建 npm”的过程,在最外层的 node_modules 的同级目录下会生成一个 miniprogram_npm 目录,里面会存放构建打包后的 npm 包,也就是小程序真正使用的 npm 包。
构建打包分为两种:小程序 npm 包会直接拷贝构建文件生成目录下的所有文件到 miniprogram_npm 中;其他 npm 包则会从入口 js 文件开始走一遍依赖分析和打包过程(类似 webpack)。
寻找 npm 包的过程和 npm 的实现类似,从依赖 npm 包的文件所在目录开始逐层往外找,直到找到可用的 npm 包或是小程序根目录为止。
按理说在进行了上述操作之后应该已经可以导入并使用模块了,然而当我尝试使用const { encode, decode } = require('fast-gbk');的时候,出现报错module “miniprogram_npm/fast-gbk/codes.json”,原始的npm文件夹中应该有一个codes.json文件记录了编码,然而重新打包之后的文件夹中竟然漏了这个文件,看来其他 npm 包则会从入口 js 文件开始走一遍依赖分析和打包过程(类似 webpack)也不是完全的可靠啊。于是我把json文件中的所有内容直接复制到了打包后的程序入口index.js中,问题最终解决。
GB2312十六进制解码
fast-gbk的readme里的示例已经很清楚了,对于形似CE C2 B6 C8 3A 32 37 20 43 2C CA AA B6 C8 3A 34 38 20 25 20 0D 0A这样的数据包我的解码方式如下。(第三方包已经处理好了ASCII字符与全角字符的区别)
1 | function hexToString(hexString) { |
- 本文标题:微信小程序使用npm模块
- 本文作者:aoyouer
- 本文链接:https://i.notesai.com/posts/wechatapp-npm.html
- 版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!



