问题有没有解决啊,我这边也是同样的问题出现了
TypeScript 开发使用 inversify DI 库报错- 当前 Bug 的表现(可附上截图) [图片] - 预期表现 应该能够正确加载 reflect-metadata npm 包。 - 复现路径 使用 TS 创建小程序项目 npm i inversify reflect-metadata --save 根据 inversify 官方起始文档,编写 DI 相关代码 在小程序开发者工具,菜单点击 工具-》构建 NPM 编译小程序,并查看运行结果 报错。 SOF 上,https://stackoverflow.com/questions/37534890/inversify-js-reflect-hasownmetadata-is-not-a-function,解决的方法是直接引用:import "reflect-metadata", 然鹅,开发工具似乎并没有正确处理? - 提供一个最简复现 Demo
2020-04-24项目使用了分包,去了几个分包可以真机调试了,试着又加了几个出现下面的问题 [图片]
真机调试一直等待进程,等待设备- 当前 Bug 的表现(可附上截图) 预览和上传都没有问题,但在使用真机调试时出现“等待进程”,等待设备的提示 [图片] - 预期表现 - 复现路径 - 提供一个最简复现 Demo 代码私下里发
2019-03-05问题自己花了一天时间找到了一种解决办法,但不知道官方有没有做这个限制 解决办法:不要定义太深的目录结构,控制在5层之内,等官方权威发布
真机调试时发生Error 急!!!点击真机调试时出现了Error,为了还原错误场景,做了一个示例代码 https://github.com/six006/test-weapp-remote-debug-error 完整代码下载 1 直接下载并运行项目会报错误Error 未列出详细原因 [图片] 2 以下情况可以正常真机调试, 2.1 删除 /npm/@decorator/libs-services/lib/sources/ 下任意两个文件夹; 2.2 删除 work-context就可以真机调试; (不知为什么,难道有文件夹数量限制) [图片] 比如我删除了\npm\@decorator\libs-services\lib\sources\work-context文件夹后,就可以正常真机调试了,请解啊 [图片]
2018-10-10问题解决了: 解决步骤: 在小程序根目录(dist)下复制项目(project)的package.json,去除相关的devDepenedencies,只保留dependencies 在小程序根目录(dist)下执行命令npm install 使用小程序开发工具,构建npm 收工 吐槽: 太不方便了!
构建npm时,package.json中devDependencies也同时构建- 当前 Bug 的表现 devDependencies中的模块也构建了 [图片] - 预期表现 1.npm install 2.再用小程序npm构建 3.应该只生成dependencies中的模块,但把devDependencies中也生成了 - 复现路径 - 提供一个最简复现 Demo 以用代码片段列出
2018-09-12我这边devDependencies也构建了
npm构建会把devDependencies的包也构建[代码]"dependencies"[代码][代码]: {[代码][代码] [代码][代码]"lodash.pick"[代码][代码]: [代码][代码]"^4.4.0"[代码][代码]},[代码][代码]"devDependencies"[代码][代码]: {[代码][代码] [代码][代码]"eslint"[代码][代码]: [代码][代码]"^5.5.0"[代码][代码],[代码][代码] [代码][代码]"eslint-config-cantonjs"[代码][代码]: [代码][代码]"^2.0.0"[代码][代码],[代码][代码] [代码][代码]"eslint-config-standard"[代码][代码]: [代码][代码]"^12.0.0"[代码][代码],[代码][代码] [代码][代码]"eslint-plugin-import"[代码][代码]: [代码][代码]"^2.14.0"[代码][代码],[代码][代码] [代码][代码]"eslint-plugin-node"[代码][代码]: [代码][代码]"^7.0.1"[代码][代码],[代码][代码] [代码][代码]"eslint-plugin-promise"[代码][代码]: [代码][代码]"^4.0.0"[代码][代码],[代码][代码] [代码][代码]"eslint-plugin-standard"[代码][代码]: [代码][代码]"^4.0.0"[代码][代码],[代码][代码] [代码][代码]"prettier-eslint-cli"[代码][代码]: [代码][代码]"^4.7.1"[代码][代码]}[代码]package.json中dependencies和devDependencies如上,使用开发者工具的时候会把devDependencies也进行构建,devDependencies不应该被构建
2018-09-10已经真机测试通过,可以加qq讨论:974353437 [代码]const app = getApp()[代码] [代码]Page({[代码][代码] [代码][代码]data: {[代码][代码] [代码][代码]imgUrl: [代码][代码]''[代码][代码],[代码][代码] [代码][代码]result:[代码][代码]''[代码][代码] [代码][代码]},[代码][代码] [代码][代码]onLoad() {[代码][代码] [代码][代码]this[代码][代码].initCaptcha();[代码][代码] [代码][代码]},[代码][代码] [代码][代码]initCaptcha() {[代码][代码] [代码][代码]let url = [代码][代码]'http://192.168.0.119:15539/Captcha/Index'[代码][代码];[代码][代码] [代码][代码]wx.request({[代码][代码] [代码][代码]header: app.globalData.header,[代码][代码] [代码][代码]url,[代码][代码] [代码][代码]data:{},[代码][代码] [代码][代码]success: (res) => {[代码][代码] [代码][代码]this[代码][代码].setSessionId(res);[代码][代码] [代码][代码]this[代码][代码].downloadCaptcha();[代码][代码] [代码][代码]}[代码][代码] [代码][代码]})[代码][代码] [代码][代码]},[代码][代码] [代码][代码]downloadCaptcha(){[代码][代码] [代码][代码]let url = [代码][代码]'http://192.168.0.119:15539/Captcha/Generate?'[代码] [代码]+ [代码][代码]new[代码] [代码]Date().getTime();[代码][代码] [代码][代码]wx.downloadFile({[代码][代码] [代码][代码]header: app.globalData.header,[代码][代码] [代码][代码]url,[代码][代码] [代码][代码]success: (res) => {[代码][代码] [代码][代码]console.log(res);[代码][代码] [代码][代码]this[代码][代码].setData({[代码][代码] [代码][代码]imgUrl:res.tempFilePath[代码][代码] [代码][代码]});[代码][代码] [代码][代码]}[代码][代码] [代码][代码]})[代码][代码] [代码][代码]},[代码][代码] [代码][代码]refreshCaptcha() {[代码][代码] [代码][代码]this[代码][代码].initCaptcha();[代码][代码] [代码][代码]},[代码] [代码] [代码][代码]setSessionId(res) {[代码][代码] [代码][代码]let cookieStr = res.header[[代码][代码]'Set-Cookie'[代码][代码]];[代码][代码] [代码][代码]// app.globalData.header.Cookie = cookieStr;[代码][代码] [代码][代码]if[代码] [代码](cookieStr){[代码][代码] [代码][代码]let cookies = cookieStr.split([代码][代码]'; '[代码][代码])[代码] [代码] [代码][代码]if[代码] [代码](!cookies || cookies.length <= 0)[代码][代码] [代码][代码]return[代码][代码];[代码] [代码] [代码][代码]cookies.forEach([代码][代码] [代码][代码](v) => {[代码][代码] [代码][代码]const str = v.split([代码][代码]'='[代码][代码]);[代码][代码] [代码][代码]if[代码] [代码](str[0] && str[0] == [代码][代码]'ASP.NET_SessionId'[代码][代码]) {[代码][代码] [代码][代码]let sessionId = decodeURI(str[1]);[代码][代码] [代码][代码]app.globalData.header.Cookie = `ASP.NET_SessionId=${sessionId}`;[代码][代码] [代码][代码]}[代码][代码] [代码][代码]}[代码][代码] [代码][代码]);[代码][代码] [代码][代码]}[代码] [代码] [代码][代码]},[代码] [代码] [代码][代码]onSubmit(e){[代码][代码] [代码][代码]let { code } = e.detail.value;[代码][代码] [代码][代码]let url = [代码][代码]'http://192.168.0.119:15539/Captcha/Validate'[代码][代码];[代码][代码] [代码][代码]wx.request({[代码][代码] [代码][代码]header: app.globalData.header,[代码][代码] [代码][代码]url,[代码][代码] [代码][代码]data: {code},[代码][代码] [代码][代码]success: (res) => {[代码][代码] [代码][代码]console.log(res);[代码][代码] [代码][代码]this[代码][代码].initCaptcha();[代码] [代码] [代码][代码]this[代码][代码].setData({[代码][代码] [代码][代码]result:res.data.message[代码][代码] [代码][代码]})[代码][代码] [代码][代码]}[代码][代码] [代码][代码]})[代码][代码] [代码][代码]}[代码][代码]})[代码] wxml [代码]<!--index.wxml-->[代码][代码]<[代码][代码]form[代码] [代码]bind:submit[代码][代码]=[代码][代码]"onSubmit"[代码] [代码]class[代码][代码]=[代码][代码]"form"[代码][代码]>[代码][代码] [代码][代码]<[代码][代码]input[代码] [代码]placeholder[代码][代码]=[代码][代码]'请输入验证码'[代码] [代码]name[代码][代码]=[代码][代码]"code"[代码] [代码]/>[代码][代码] [代码][代码]<[代码][代码]image[代码] [代码]bindtap[代码][代码]=[代码][代码]"refreshCaptcha"[代码] [代码]src[代码][代码]=[代码][代码]"{{imgUrl}}"[代码] [代码]mode[代码][代码]=[代码][代码]"cover"[代码] [代码]style[代码][代码]=[代码][代码]"width:100px;height:50px"[代码][代码]></[代码][代码]image[代码][代码]>[代码][代码] [代码][代码]<[代码][代码]button[代码] [代码]formType[代码][代码]=[代码][代码]"submit"[代码][代码]>验证</[代码][代码]button[代码][代码]>[代码][代码] [代码][代码]<[代码][代码]view[代码][代码]>操作结果:{{result}}</[代码][代码]view[代码][代码]>[代码][代码]</[代码][代码]form[代码][代码]>[代码]
微信小程序可以用thinkphp的验证码类库captcha来做图形验证码吗楼主菜鸡一枚,最近有在学习thinkphp,看到有个图形验证码的类库captcha,故想尝试用在小程序中。 小程序wxml代码如下: <!--pages/test/test.wxml--> <form bindsubmit="formsubmit"> <input name="code" placeholder="请输入验证码" style="border:1px solid black"/> <image onload="imageload" src="{{captchaImage}}" style="width:200px;height:88px;" ></image> <button form-type="submit">提交</button> </form > js代码如下: // pages/test/test.js Page({ data: { captchaImage:'https://www.st1207.com/captcha' //验证码图片地址 }, formsubmit: function (e) { console.log(e.detail.value); var that=this; wx.request({ url: "https://www.st1207.com/api/v3.captcha/index", //服务器验证地址 method:"GET", data:e.detail.value, success: function (res) { console.log(res.data); }, fail: function (err) { console.log(err); } }) }, }) 服务器代码如下 <?php namespace app\api\controller\v3; use think\Controller; use think\captcha\Captcha as Cap; class Captcha extends Controller{ public function index($code=''){ $captcha=new Cap; if(!$captcha->check($code)){ return '验证失败'.$code; }else{ return '验证成功'.$code; } } } ?> 代码完成,开始测试,虽然验证码可以正常显示,但是提交表单进行验证的时候总是提示验证失败。 [图片] 各种网络搜索查找资料,才发现thinkphp是用Session来储存验证码的。而小程序不支持主动保存cookie,更不会在request header中发送cookie。导致小程序每次向服务器发送请求的时候,SESSIONID都会发生变化,所以永远都不会验证成功。 思考解决办法:手动保存服务器response header中的sessionid,再向服务器发送验证请求的时候,在wx.request中手动添加header:{'cookie':'PHPSESSID=...' }. 查看以上代码,小程序第一次向服务器发送请求是在<image>组件加载服务器验证码图片的时候,此时没有办法获得response header。所以也就不能手动保存。 再想办法 :<image>组件的src 不直接使用服务器的图形验证码地址,先在onload事件中通过wx,request或者wx.downloadFile请求服务器https://www.st1207.com/captcha, 获得response header和图片信息再通过js的data 让小程序来显示。 查看wx.request 的回调函数success:function(res){ } [图片] 有response header,可以获得sessionID 为 res.header['Set-Cookie'],但是返回的res.data确是一堆乱码,无法来让<image>组件进行显示 查看wx.downloadFile 的回调函数[图片]虽然可以把图片下载下来进行显示,但是并不能获得response header。 作为一名菜鸟,不知道有没有表达的清楚,请各位大神帮忙看看还有没有其他办法。
2018-07-25自己解决了,里面组件不能加的太多
小程序重启耗时过久,请确认业务逻辑中是否有复杂运算,或者死循环- 当前 Bug 的表现(可附上截图) [图片] - 预期表现 新建页面后,运行有时候出现,有时候又不出现, "usingComponents":{ "hi-elip": "/packages/elip/index", "hi-icon": "/packages/icon/index" } 单独将usingComponets去了正常了,再把所有usingComponets加上也正常了
2018-05-24想让button点击时,form能提交
自定义button无法触发form的submit页面 [代码]<[代码][代码]form[代码] [代码]bind:submit[代码][代码]=[代码][代码]"onSubmit"[代码] [代码]class[代码][代码]=[代码][代码]"form"[代码][代码]>[代码][代码]<[代码][代码]view[代码] [代码]style[代码][代码]=[代码][代码]"border:1px solid #eee;margin-bottom:20px;"[代码][代码]>[代码][代码]<[代码][代码]input[代码] [代码]name[代码][代码]=[代码][代码]"username"[代码] [代码]value[代码][代码]=[代码][代码]"hi"[代码] [代码]/>[代码][代码]</[代码][代码]view[代码][代码]>[代码][代码]<!--1 原生按钮 -->[代码][代码]<[代码][代码]button[代码] [代码]formType[代码][代码]=[代码][代码]"submit"[代码][代码]>登录</[代码][代码]button[代码][代码]>[代码][代码]<!--2 自定义按钮 -->[代码][代码]<[代码][代码]custom-button[代码][代码]/>[代码][代码]</[代码][代码]form[代码][代码]>[代码] index.js [代码]Page({[代码][代码] [代码][代码]data: {[代码] [代码] [代码][代码]},[代码][代码] [代码][代码]onSubmit(e) {[代码][代码] [代码][代码]console.log([代码][代码]"username:"[代码][代码],e.detail.value)[代码][代码] [代码][代码]},[代码][代码]})[代码] 使用原生的button是可以触发 [图片] 自定义的按钮则无法触发form的submit事件,请问如何才能解决呢?
2018-05-21试试在input自定义组件中加上这句: behaviors: ['wx://form-field'],
小程序自定义组件不能进行form提交希望做一个组件,比如dialog,这个dialog组件中包含了一下部分代码: [代码]< [代码][代码]form[代码] [代码]bindsubmit[代码] [代码]= [代码][代码]'submit'[代码] [代码]> [代码] [代码] [代码][代码]< [代码][代码]slot[代码] [代码]/> [代码] [代码] [代码][代码]< [代码][代码]button[代码] [代码]type[代码] [代码]= [代码][代码]'submit'[代码] [代码]>提交[代码]button[代码][代码]> [代码] [代码][代码][代码][代码]form[代码] [代码]>[代码][代码][代码]然后在page页面中使用这个dialog: [代码]<[代码][代码]dialog[代码] [代码]bind:submit[代码] [代码]= [代码][代码]"onsubmit"[代码] [代码]> [代码][代码] [代码][代码]< [代码][代码]input[代码] [代码]name[代码] [代码]= [代码][代码]"testInput"[代码] [代码]value[代码] [代码]= [代码][代码]"Test Value"[代码] [代码]/>[代码][代码][代码]dialog[代码] [代码]>[代码][代码]结果发现:按钮点击提交后,submit事件中不能获取到testInput控件的值。整个按钮事件的e.detail.value为空。 [图片] 请帮忙分析解决,谢谢!
2018-05-21我刚好用到,如果自定义文本框组件不加这个wx://form-field在提交时是获取不到name的值的,加上就可以了! [图片] [图片] 获取到表单的控件的值 [图片]
behavior的疑惑,文档好难懂。@LastLeaf 【我的需求】:让程序中form表单在提交的时候,能获取到自定义组件中input的值。 看完behavior的文档后(下图),有好多疑惑: 一些行为是指什么? 类似表单控件的行为,是指什么行为 内置behavior往往会为组件增加一些属性,可否举个例子? form组件如何识别自定义组件? [图片]
2018-05-21