这个拷贝当初是为了兼容有弱循环依赖的包而加的,可以试试工具的 nightly 版本,加了 getter 和 setter,应该仍然有拷贝,不过对于运行时修改 module.exports 应该也会同步过去。 另外这里仍有一个已知问题,就是原型链没有被拷贝过去,这个修复近期也会跟 nightly 版本出去。
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尝试了多台不同型号的安卓手机都没能复现 “app.js没有执行onShow” 这个问题,想问下你那边是必现的么?操作流程就是代码片段里点开沃尔玛小程序回来发现没有出现 app.onShow 是吗?还有没有其他的一些操作?
小程序之间互跳bug- 当前 Bug 的表现(可附上截图) 小程序A先打开一个pdf文件打开成功后返回,然后点击按钮跳转到小程序B 再返回到小程序A 这时候如果要跳转到其他分包的页面,页面不会进行跳转 从其他小程序跳回来的时候,app.js没有执行onShow - 预期表现 小程序A可以跳转页面 问题机型: vivo x9sPlus、小米8 微信版本号:7.0.3 安卓版本号:8.1.0
2019-07-04x,y 表示当前坐标,source 请翻文档: [图片]
可移动视图容器movable-view的拖动事件可移动视图容器movable-view的拖动事件bindchange如何正确使用?event.detail = {x, y, source}是什么意思?
2019-06-06检查一下以下几点: 1、package.json 里的 dependencies 字段有没有这个包 2、包有没有经过 npm 构建 3、目前非小程序 npm 包不保留包内结构,不支持通过 xxx/yyy.js 这样的包名+路径引入,因为非小程序 npm 包会从入口开始做静态依赖分析并打成一个 js 文件。如果是自己开发的 npm 包建议补充 miniprogram 字段,搞成小程序 npm 包就会保留包内路径了 相关文档:https://developers.weixin.qq.com/miniprogram/dev/devtools/npm.html
10分钟前项目里引用npm包报错今天早上开发这工具引用npm包报错[图片] @官方,帮忙看看
2019-06-06给个 demo 或者代码片段吧,我们看下你是用了什么包或者有什么特殊的代码导致的。
npm 构建发生错误- 当前 Bug 的表现(可附上截图) - 预期表现 - 复现路径 - 提供一个最简复现 Demo 构建时未引入任何第三方包 [图片]
2019-05-28可以的,只要对应目录下有 package.json 就可以,而且包要声明到 dependencies 字段里,比如下面这样的目录结构: [图片]
如何构建npm非主包文件小程序只会构建npm包主入口文件,请问要如何可以构建非主入口的文件
2019-05-27package.json 和 node_modules 均需要在小程序根目录下,即 miniprogramRoot 目录下。
TS quick-start 构建npm失败- 当前 Bug 的表现(可附上截图) Nightly v1.02.1904302下新建TS项目 项目根目录下执行 npm i -S vant-weapp,node_modules 在项目根目录下,小程序根目录为 miniprogram 项目结构 [代码]├── miniprogram // 小程序根目录[代码][代码]├── node_modules[代码][代码]├── package-lock.json[代码][代码]├── package.json[代码][代码]├── project.config.json[代码][代码]├── tsconfig.json[代码][代码]└── typings[代码] project.config.json [代码]{[代码][代码] [代码][代码]"description": "项目配置文件",[代码][代码] [代码][代码]"packOptions": {[代码][代码] [代码][代码]"ignore": [][代码][代码] [代码][代码]},[代码][代码] [代码][代码]"miniprogramRoot": "miniprogram/", // 小程序根目录[代码][代码] [代码][代码]"compileType": "miniprogram",[代码][代码] [代码][代码]"libVersion": "2.6.6",[代码][代码] [代码][代码]"projectname": "miniprogram-test-1",[代码][代码] [代码][代码]"scripts": {[代码][代码] [代码][代码]"beforeCompile": "npm run tsc",[代码][代码] [代码][代码]"beforePreview": "npm run tsc",[代码][代码] [代码][代码]"beforeUpload": "npm run tsc"[代码][代码] [代码][代码]}[代码][代码]}[代码]"构建npm",构建出错:“没有找到可以构建的NPM包” 根据文档npm支持将 node_modules 移至 miniprogram 目录(即小程序根目录)下,重新执行"构建npm"依然构建失败,此处与文档不符。 删除 miniprogramRoot 后重新构建,构建成功,此时 miniprogram_npm 在项目根目录下,但还需将 miniprogram_npm 移动至 miniprogram(即小程序根目录)下才能正常使用npm包。 - 预期表现 若指定 miniprogramRoot 且按文档说明正确存放 node_modules ,在执行"npm构建"后,miniprogram_npm 应成功构建在所指定的小程序根目录下,而不是成功构建npm包后再移动 miniprogram_npm。 - 复现路径 - 提供一个最简复现 Demo
2019-05-27项目根目录下有没有 package.json 文件?里面的 dependencies 字段有没有内容?
点击 工具-> 构建 npm 后提示 找不到npm包- 当前 Bug 的表现(可附上截图) - 预期表现 - 复现路径 - 提供一个最简复现 Demo 我使用的Mac的 nvm Node版本管理 [图片]
2019-05-27是处理 issue 号跳转时出现了比较极端的 bug,导致了死循环出现,开发同学已经开始着手处理了。
这个帖子会导致浏览器崩溃,试了好几次浏览器都这样https://developers.weixin.qq.com/community/develop/article/doc/000e2667890ee0284598518f65bc13 发现一旦进入这个帖子,前面打开的社区页面,全部崩溃。但是打开其他页面都是正常的
2019-05-20应该是 bug 来着,看起来是工具在上传代码时处理全局 npm 组件时的路径不正确导致。我们争取在近期的工具版本修复掉。
npm包引入,开发者调试正常,手机预览报错,真机调试正常[图片] [图片] npm包引入,开发者调试正常,手机预览报错,真机调试是正常 https://developers.weixin.qq.com/s/yTyj7zmQ7v7G
2019-05-13