-
Notifications
You must be signed in to change notification settings - Fork 225
常见问题
如果你还不清楚什么是开发环境,可以阅读开发环境和生产环境。
如果你还不清楚腾讯云微信小程序解决方案,可以查看 Wiki 首页或直接阅读开通指引。
如果阅读以上文章还有以下问题,请往下看相应的解决方法。
如果本文还不能解决你的问题,你可以提交 Issue 提问。
通过已经绑定腾讯云账号的微信号扫码登录微信开发者工具,接着创建一个小程序项目:
项目目录可以选择 wafer2-startup
提供的 Demo 代码,也可以自行开发。
创建好项目之后会打开微信开发者工具页面,点击右上角腾讯云,选择“上传测试代码”,即可将本地的服务端代码部署到腾讯云免费分配的开发环境中。
*注意:服务器端的代码上传逻辑为合并,即如果有重名的文件,后面上传的代码会覆盖前一次上传的,如果不重名,则两者保留。文件夹一律为合并,即文件夹内文件保持前面所说的合并逻辑,不会完全替换整个文件夹。另外目前暂不支持删除线上文件、文件夹功能,你可以使用恢复开发环境来清空代码目录重新上传。
在微信开发者工具页面点击右上角“腾讯云”,在下拉菜单中选中“重启服务”,即可重启开发环境中的 Node.js 进程。
在微信开发者工具页面点击右上角“腾讯云”,在下拉菜单中选中“恢复开发环境”,即可将代码环境恢复到分配开发环境时的状态。
*注意:本操作不会删除开发环境中的 MySQL 数据库,仅会对代码目录进行恢复。
腾讯云微信小程序解决方案 2.0 是基于 Node.js 开发的,提供远程调试功能,在微信开发者工具页面点击右上角“腾讯云”,在下拉菜单中选中“启动单步调试”,系统会自动重启远程服务,并使用 inspect-brk 模式启动 Node.js App,接着开发者工具会打开调试窗口。
此时,App 进入暂停状态,这个时候你可以在 app.js
或者其他启动程序就会载入的包中下断点,点击代码左边的行号即可下断点,接着点击右上角蓝色的三角形按钮,启动 App,可以看到,程序会在断点处暂停下来。
更多关于 Node.js 远程调试的文档说明,可以查看 Chrome 开发者工具官方文档。
进入腾讯云小程序控制台,点击“日志下载”即可下载 Node.js 输出的日志。
进入腾讯云小程序控制台,点击“重置密码”,输入原密码(默认密码为小程序的 AppID)和新密码,点击确定即可修改 MySQL 数据库密码。
进入腾讯云小程序控制台,点击“phpMyAdmin”按钮打开 phpMyAdmin 登录界面,输入用户名(默认为 root
)和密码(默认密码为小程序的 AppID)点击登录即可登录进图形化数据库操作界面。
点击右边列表的“新建”,即可新建数据库。点击任一一个数据库可以进行新建表等操作。phpMyAdmin 具体操作说明可以查看 phpMyAdmin文档。
*注意:如果你使用了腾讯云一站式微信小程序解决方案的 SDK,请不要删除 cAuth
数据库,该数据库存储登录相关的信息。
腾讯云一站式微信小程序解决方案 SDK 还提供了一个直接上传图片到 COS 上的接口,具体配置项在 server/config.js
的 cos
中,不过无需配置,直接点击 Demo 中的上传图片,SDK 会自动创建 Bucket (若 Bucket 不存在)并将图片上传到 Bucket 中,并返回访问地址。
除了使用腾讯云分配的开发环境和生产环境,你还可以部署 Demo 到自己的服务器上,只需要修改 server/config.js
的配置,并修改相应的 client/config.js
中 host
到你的服务器上即可。
server/config.js
具体配置可以参考 SDK API 文档。
服务端 Demo 采用 Koa.js 框架编写,腾讯云基于 Koa 对上层进行一个简单的封装,方便你快速的添加新建路由。
只需要在 controllers
目录下新建一个文件,例如为 demo.js
,写入如下代码:
module.exports = function (ctx, next) {
ctx.state.data = { msg: 'Hello World' }
}
保存之后,接着在 routes/index.js
的 module.exports = router
之前添加如下路由并保存:
router.get('/demo', controllers.demo)
接着点击右上角的“腾讯云”按钮,选择“上传测试代码”,勾选“智能上传”,点击确定即可上传并部署代码,等到提示开发环境部署成功了之后,打开浏览器,访问 https://腾讯云分配的域名/weapp/demo
,即可看到刚刚编写的返回,是一个 JSON 字符串:
{"code":0,"data":{"msg":"Hello World"}}
在 Demo 中 server/config.js
的 CONF
里添加一项 wxMessageToken
,为任意值:
点击开发者工具右上角的“腾讯云”按钮,点击“上传代码”,代码上传完成之后点击“部署开发环境”,部署开发环境完成之后登录微信公众平台,依次进入“设置”-“开发设置”,里面有个消息推送,点击启用,按如下指引填写:
点击“提交”即可。
服务端 SDK 还暴露出了内部使用的 MySQL 连接,由于 SDK 内部使用 Knex.js 连接数据库,SDK 暴露的 MySQL 实例就是 Knex.js 连接实例,具体使用方法可以查看 Knex.js 文档:
const { mysql } = qcloud
mysql('db_name').select('*').where({ id: 1 }) // => { id:1, name: 'leo', age: 20 }
本 Demo 新增快速添加 CGI 指引,手把手指导快速添加后端接口:
-
打开
server/routes/index.js
文件,添加如下语句:router.get('/demo', controllers.demo)
-
在
server/controllers
下新建一个demo.js
文件,写入如下代码:module.exports = ctx => { ctx.state.data = { msg: 'Hello World' } }
-
点击开发者工具右上角“腾讯云” - “上传测试代码”
-
点击测试 CGI 按钮,即可看到结果
如果你不想每次都上传到开发环境来测试代码,通过以下配置你可以在本地运行服务端进行测试。
将 Demo 代码 clone 到本地,将 config.local.js.example
重命名为 config.local.js
,并用编辑器打开修改相关配置。
修改 client/config.js
的 host
为 localhost:5757
,并把链接改为 http
开头(本地调试无法使用 HTTPS 访问)
配置好 config.js
之后,就要开始初始化环境,初始化环境分为两步:
-
安装依赖 - 打开 CMD 输入如下命令:
# 切换到服务端代码目录 cd server # 安装依赖 npm install # 安装全局依赖 npm install -g nodemon
-
初始化数据库 - 打开 CMD 输入如下命令:
node tools/initdb.js
Demo 里已经内置了调试的脚本,在 CMD 中输入如下命令即可启动 Debug 模式:
npm run dev
启动之后,会输出 SDK 和其他 npm 包的 debug 信息,你也可以自己开发的时候直接输出。
如果你想使用腾讯云微信小程序一站式解决方案,并使用微信开发者工具一键部署,微信开发者工具打开的目录必须包含 project.config.json
文件,文件必须是个 JSON 字符串并包含 client
和 svr
两个 key
。实例文件如下:
{
"client": "./client",
"svr": "./server"
}
文件中的 client
表示小程序端代码,svr
表示服务器端代码。点击腾讯云相关操作(如上传测试代码)的时候,只会把 svr
指向的目录下的代码上传到开发(或生产)环境。
点击“登录”提示“{"code":-1,"error":"ERR_GET_SESSION_KEY\n{"code":5100,"message":"(-1) 服务内部错误,请稍后重试或联系客服人员解决。","codeDesc":"ResourceOpFailed"}"}”的错误,可以按照如下方式排查问题:
- 检查是否将 client/config.js 里的 host 修改为分配的开发环境域名
- 重新点击“编译”小程序,点击登录重试
- 点击“腾讯云”-“重启服务”,重启成功之后点击登录重试
- 如果你有一定的开发能力,可以启动单步调试,在 controller/login.js 里打一下断点,看看具体原因。
如果以上方法均无法解决,可以将你的腾讯云账号 ID(可以在这查看https://console.qcloud.com/developer)贴到 Issue,我这里帮您排查一下。
上传测试代码错误,提示:
{"code":-1,"reason":"module.js:487\n throw err;\n ^\n\nError: Cannot find module'wafer-node-sdk'\n at Function.Module._resolveFilename (module.js:485:15)\n at Function.Module._load (module.js:437:25)\n at Module."}
是因为代码里的依赖没有安装,请点击开发者工具右上角“腾讯云”里的“安装依赖”,依赖安装完成之后,点击“重启服务”即可正常启动 Node.js 程序。
建议上传测试代码的时候,点击勾选”部署后自动安装依赖“
![点击勾选部署后自动安装依赖](https://user-images.githubusercontent.com/3380894/29958482-986b914a-8f25-11e7-80ec-955ace1572ff.jpg)
新版小程序解决方案目前暂无计划支持开发服务器连接能力,你只能通过微信开发者工具上传、部署、调试代码。
生产环境属于线上的正式环境,不提供开发者工具中直接部署、修改代码、调试等会涉及稳定性的功能。你只能上传代码,并登录腾讯云小程序控制台中查看代码版本及部署最新代码。
![真机预览的时候提示网络出错](https://user-images.githubusercontent.com/3380894/30009326-078af3fa-915a-11e7-902a-049558729a31.png)
这种问题是因为开发域名不在安全域名列表里,可以点击界面右上角的三个小点,选择开启调试,就会绕过域名的验证
![真机预览打开调试](https://user-images.githubusercontent.com/3380894/30009368-5349ae76-915a-11e7-8592-4c8dd06a5e88.jpg)
[ 返回 Wiki 首页 ]
Wafer - 企业级微信小程序全栈方案
如果 Wiki 内容不能解决你的疑惑,欢迎提交 Issue 进行反馈或者加入 QQ 群(481612621)进行讨论