收藏
回答

使用npm的urlencode,下载引入后,运行报错

问题模块 框架类型 问题类型 终端类型 微信版本 基础库版本
框架 小程序 Bug 工具 2.6.6.25 2.5.0

- 当前 Bug 的表现(可附上截图)

n

使用npm引入了urlencode包以后,运行报错


去掉这行代码,就不会报错,因为要用到urlencode,所以必须引入。说明:npm的编译没有问题。


- 预期表现

应该正常执行

- 复现路径


- 提供一个最简复现 Demo


最后一次编辑于  01-11  (未经腾讯允许,不得转载)
邀请回答
复制链接收藏投诉关注问题回答

3 个回答

  • June
    June
    01-11

    里面 safer-buffer 用到了 nodejs 的 buffer 模块导致,因为此处不会将 nodejs 的实现给打包进去,文档里有这个约束:




    尝试多安装一个 buffer 包(https://github.com/feross/buffer )给 safer-buffer 使用试试?

    01-11
    赞同 1
    回复
  • 僵尸浩
    僵尸浩
    01-11

    麻烦给个相关的代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html),我们定位下问题

    01-11
    赞同
    回复
  • SUN
    SUN
    01-11

    这个js文件require了urlencode,然后被页面的index.js引用


    const md5 = require('./md5.js');

    const urlencode = require('urlencode');

    const sortData = function (data) {

      let keys = Object.keys(data).sort();

      let result = {}

      for (let i = 0; i < keys.length; i++) {

        let value = data[keys[i]]

        if (value instanceof Object) {

          value = sortData(value)

        }

        result[keys[i]] = value

      }

      return result;

    }


    const makeUrl = function (method_tag, params) {

      console.log('Call makeUrl:', method_tag, params)

      let time = (new Date()).valueOf();

      let token = 'test';

      let tag = method_tag;

      let params_str = JSON.stringify(sortData(params))

      let sign_data = 'createTime=' + time + 'params=' + params_str+'tag='+tag+'token='+token;

      let url = 'http://qae.qunar.com/api/router?';

      let createTime = time;

      let sign = md5.md5(sign_data).toLowerCase();

      console.log(sign_data, sign.toLowerCase())

      params_str = urlencode(params_str);

      return url + 'token=' + token + '&tag' + method_tag + '&token' + token + '&createTime' + time + '&params' + params_str;

    }



    module.exports = {

      makeUrl: makeUrl

    }


    01-11
    赞同
    回复