que01 / dva-demo

这是一个基于dva-cli构建的项目
http://github.que01.top/
22 stars 21 forks source link

在dva中配置rap的问题 #2

Closed jasminecjc closed 7 years ago

jasminecjc commented 7 years ago

我按照你博客里写的步骤配置rap 1.配置config.js rapFlag设为true,rapHost配置为rap网站上的请求根路径,跟示例只有后面数字的不同 2.配置query.js 代码和你github仓库里的一样 3.运行dva g model funnel 信息如下

/usr/local/lib/node_modules/dva-cli/bin/dva-generate
      create  model funnel
    register  to entry src/index.js
AssertionError: api/models/create: file exists
    at create (/usr/local/lib/node_modules/dva-cli/node_modules/dva-ast/lib/api/models.js:49:24)
    at exports.default (/usr/local/lib/node_modules/dva-cli/node_modules/dva-ast/lib/api/index.js:34:3)
    at /usr/local/lib/node_modules/dva-cli/lib/generate.js:44:27
    at generate (/usr/local/lib/node_modules/dva-cli/lib/generate.js:51:11)
    at Object.<anonymous> (/usr/local/lib/node_modules/dva-cli/bin/dva-generate:9:27)
    at Module._compile (module.js:570:32)
    at Object.Module._extensions..js (module.js:579:10)
    at Module.load (module.js:487:32)
    at tryModuleLoad (module.js:446:12)
    at Function.Module._load (module.js:438:3)

3.配置mock/funnel.js 代码同示例

4.配置model

let { data } = yield call(GET,API,{
                userId: userId
            }, rapFlag);

这里获取到的data为undefined 查看发起的请求, 地址如下: http://localhost:8989/funnel/getMyFunnels?userId=111 返回码为200 没有返回结果,直接访问没有任何数据 访问 http://rap.taobao.org/mockjs/11182/funnel/getMyFunnels 是有数据的,想问我哪里的配置有问题么

que01 commented 7 years ago

欢迎提问。我认真看了下你的描述,虽然还是有很多疑问,但是还是先回复一下你。 首先我在文中出于初期不是很了解情况的前提下,做了两种尝试。

这两种方法是互斥的,你不能搞混两种情况,还是希望你认真读一遍原文,这样你会有收获的。另外给出一下mock目录里面的代码你看看,希望有帮助(它是第二种方案下的mock和联调的处理)。

var co = require('co');
var fetch = require('node-fetch');
var safeeval = require('safe-eval');
var mockjs = require('mockjs');

// var rapProjectPath = '/mockjs/6'
// var Host = 'http://116.7.245.xxx:8345' //rap地址
var Host = 'http://192.168.100.xxx:8080' //后端所在地址 项目需要发布到/api路径下

function mockMapFun(req,res){
  co(function *() {
    var response = yield fetch(Host + rapProjectPath + req.url.replace('/api/','/'));
    var mockTpl = yield response.text();
    res.json( mockjs.mock(safeeval(mockTpl)) );
  });
}

module.exports = {
  'GET  /api/(.*)':Host,
  'POST /api/(.*)':Host
  // 'GET  /api/(.*)':mockMapFun,
  // 'POST /api/(.*)':mockMapFun
};

这里的注释就是rap和实际联调的处理,你使用其中一个时候注释另外一个即可。