- require一个npm模块的子路径,怎么没有打包出来呢?
require('someNpmModule') require('someNpmModule/utils') 如上:构建完npm包,在miniprogram_npm目录下只有 someNpmModule/index.js,没有将 require('someNpmModule/utils') 作为一个入口打包
2020-08-19 - npm require 浅拷贝
- 当前 Bug 的表现(可附上截图) - 预期表现 - 复现路径 - 提供一个最简复现 Demo 小程序会在每个npm包的入口文件前加入一段模块打包代码,类似webpack的,下面是其中 __REQUIRE__ 函数的实现 [代码]var[代码] [代码]__REQUIRE__ = [代码][代码]function[代码] [代码](modId, source) {[代码][代码] [代码][代码]if[代码] [代码](!__MODS__[modId])[代码][代码] [代码][代码]return[代码] [代码]require(source);[代码] [代码] [代码][代码]if[代码] [代码](!__MODS__[modId].status) {[代码][代码] [代码][代码]var[代码] [代码]m = { exports: {} };[代码][代码] [代码][代码]__MODS__[modId].status = 1;[代码][代码] [代码][代码]__MODS__[modId].func(__MODS__[modId].req, m, m.exports);[代码] [代码] [代码][代码]if[代码] [代码]([代码][代码]typeof[代码] [代码]m.exports === [代码][代码]"object"[代码][代码]) {[代码][代码] [代码][代码]Object.keys(m.exports).forEach([代码][代码]function[代码] [代码](k) {[代码][代码] [代码][代码]__MODS__[modId].m.exports[k] = m.exports[k];[代码][代码] [代码][代码]});[代码] [代码] [代码][代码]if[代码] [代码](m.exports.__esModule)[代码][代码] [代码][代码]Object.defineProperty(__MODS__[modId].m.exports, [代码][代码]"__esModule"[代码][代码], { value: [代码][代码]true[代码] [代码]});[代码] [代码] [代码][代码]} [代码][代码]else[代码] [代码]{[代码][代码] [代码][代码]__MODS__[modId].m.exports = m.exports;[代码][代码] [代码][代码]}[代码][代码] [代码][代码]}[代码] [代码] [代码][代码]return[代码] [代码]__MODS__[modId].m.exports;[代码][代码]};[代码]可以看到,这里判断了如果一个模块导出的是一个对象,就会对其做一层的拷贝,这不是浅拷贝,浅拷贝是直接赋值。这一层的拷贝会导致引用出问题 以下是webpack的require实现 [代码]function[代码] [代码]__webpack_require__(moduleId) {[代码][代码] [代码][代码]/******/[代码][代码] [代码][代码]/******/[代码] [代码]// Check if module is in cache[代码][代码] [代码][代码]/******/[代码] [代码]if[代码] [代码](installedModules[moduleId]) {[代码][代码] [代码][代码]/******/[代码] [代码]return[代码] [代码]installedModules[moduleId].exports;[代码][代码] [代码][代码]/******/[代码][代码] [代码][代码]}[代码][代码] [代码][代码]/******/[代码] [代码]// Create a new module (and put it into the cache)[代码][代码] [代码][代码]/******/[代码] [代码]var[代码] [代码]module = installedModules[moduleId] = {[代码][代码] [代码][代码]/******/[代码] [代码]i: moduleId,[代码][代码] [代码][代码]/******/[代码] [代码]l: [代码][代码]false[代码][代码],[代码][代码] [代码][代码]/******/[代码] [代码]exports: {},[代码][代码] [代码][代码]/******/[代码] [代码]hot: hotCreateModule(moduleId),[代码][代码] [代码][代码]/******/[代码] [代码]parents: (hotCurrentParentsTemp = hotCurrentParents, hotCurrentParents = [], hotCurrentParentsTemp),[代码][代码] [代码][代码]/******/[代码] [代码]children: [][代码][代码] [代码][代码]/******/[代码][代码] [代码][代码]};[代码][代码] [代码][代码]/******/[代码][代码] [代码][代码]/******/[代码] [代码]// Execute the module function[代码][代码] [代码][代码]/******/[代码] [代码]modules[moduleId].call(module.exports, module, module.exports, hotCreateRequire(moduleId));[代码][代码] [代码][代码]/******/[代码][代码] [代码][代码]/******/[代码] [代码]// Flag the module as loaded[代码][代码] [代码][代码]/******/[代码] [代码]module.l = [代码][代码]true[代码][代码];[代码][代码] [代码][代码]/******/[代码][代码] [代码][代码]/******/[代码] [代码]// Return the exports of the module[代码][代码] [代码][代码]/******/[代码] [代码]return[代码] [代码]module.exports;[代码][代码] [代码][代码]/******/[代码][代码]}[代码]可见并没有做一层的拷贝。
2019-07-12 - 小程序设置全屏bug
设置navigationStyle:"custom"时,input和textarea组件blur时会将右上角的关闭顶上去 [图片] [图片]
2018-03-21 - 小程序体验版部分机型信息加载失败
公司名称 : 武汉微派网络科技有限公司 MP帐号(邮箱): zhco@weapp.me 开发者微信号: bgfist 机型、操作系统 : iPhone6-iOS 8.4 、 小米4c-MIUI8.1-Android5.1.1 、 华为P9-EMUI4.1-Android6.0 、iPhone6s-iOS10.2 微信版本 : 6.5.3 是否必现 : 必现 出现时间 : 2017/1/3 19:00 操作路径 : 小程序体验版入口 问题描述 : 在小程序体验版入口点击“前往体验版”,提示加载小程序信息失败 问题截图 : [图片] [图片] 代码片段截图
2017-01-03