我的项目是这样的,一个简单的Express 项目, 里面包含我的网页应用和云函数。

在本地开发的时候,我的网页应用是通过SDK调用api和云函数。而SDK是直接调用生产环境的api。所以会出现这样的情况:

在本地开发,我同时更新了网页应用和云函数。可是我无法在网页应用里使用我最新更新的云函数。我必须先部署,然后才可以在本地网页应用调用更新了的云函数。 注意,这里有一个问题是由于网页应用和云函数都在一个LeanEngine里,那么我一旦部署,就把我的更新的网页应用也部署到生产环境了。

理想的状态是,本地网页应用调用本地云函数,stg环境网页应用调用stg环境云函数,生产环境网页应用调用生产环境云函数。

为此我尝试在本地修改SDK的serverURL

AV.serverURL = window.location.origin;

修改后倒是可以调用云函数了,可是无法调用标准api了

http://localhost:3000/1.1/classes/MyData 404 (Not Found)

想请问,我这种情况,有什么好的解决办法吗?

确实目前没有比较好的方案,我们正在关注这个问题。

我又发现了一个方式可以解决这个问题。过来分享一下。

Charles5 做代理,将所有 api.leancloud.cn/1.1/functions/ 代理到 localhost。

这样所有普通的api调用仍然指向官方api。但自定义的api就直接本地测试了。

2 人赞了这个帖子.

leanstorage初始化后加入

AV.serverURL = 'http://localhost:8080';

localhost:8080是本地启动的云引擎项目

云引擎项目中,app.use(AV.express())(1.1/calls, 1.1/functions)后加入代理

var proxy = require('express-http-proxy');
// 加载云引擎中间件
app.use(AV.express());

app.use(proxy('https://api.leancloud.cn'));

即可将leanstorage的调用发送到本地,functions和calls本地处理调试,其它转发给leancloud

2 人赞了这个帖子.