收藏
回答

rxjs/operators npm构建失败

构建npm

import { of  } from 'rxjs';  // ok,可以使用


import { map , filter, zip } from 'rxjs/operators';  // 错误  module "pages/index/rxjs/operators" is not defined 


构建的miniprogram_npm里根本就没有rxjs/operators,只有一个index.js,而index.js里又不包含operators的入口


请问如何解决?你们自己可以试试吗?

最后一次编辑于  2019-01-27
回答关注问题邀请回答
收藏

5 个回答

  • CN-Tower
    CN-Tower
    2021-03-31

    用rxjs-mp,在小程序中优雅的使用rxjs,还有语法提示: https://www.npmjs.com/package/rxjs-mp

    const Rx = require('rxjs-mp');
    /**
     * Request method
     * @param {string} url 
     * @param {any} data 
     * @param {'GET'|'POST'|'PUT'|'DELETE'} method
     * @param {{header?: object}} options 
     */
    function request(url, data = {}, method = "GET", { header }={}) {
      return new Rx.Observable(ob => {
        const requestTask = wx.request({
          url, data, method,
          header: {
            ...(header || {})
            'Token': wx.getStorageSync('token')
          },
          success: res => {
            if (res.statusCode == 200) {
              ob.next(res);
              ob.complete();
            } else {
              ob.error(res);
            }
          },
          fail: err => {
            console.error(err);
            ob.error(err);
          }
        });
        return () => requestTask.abort();
      });
    }
    
    /**
     * GET method
     * @param {string} url 
     * @param {{header?: object}} options 
     */
    function get(url, options) {
      return request(url, null, 'GET', options);
    }
    
    const sub = get('htts://some-api-url').pipe(
      Rx.operators.map(res => res && res.data || {})
    ).subscribe(res => {
      console.log(res);
    }, err => {
      console.error(err);
    });
    
    setTimeout(() => {
      sub.unsubscribe();
    }, 1000);
    


    2021-03-31
    有用
    回复
  • 2020-08-16

    这是很扯蛋的一个地方,还是umd比较方便

    2020-08-16
    有用
    回复
  • 冯李生
    冯李生
    2019-04-15

    直接使用完整的umd版本的rxjs,地址https://unpkg.com/rxjs/bundles/rxjs.umd.min.js
    可以像下面这样用

    const Rx = require('../libs/rxjs.umd')

    const { catchError, switchMap, map, filter, debounceTime } = Rx.operators;



    2019-04-15
    有用
    回复 3
    • 阿白
      阿白
      2019-04-15

      是的,但是微信自己搞的这套使用自定义npm包的方案岂不是废了,自己需要修补下吧?

      2019-04-15
      1
      回复
    • 2019-08-11
      这么多天了,微信官方还是需要我们下载 umd 版吗?我刚又试了一下npm构建,还是不行,不能用npm 真是够糟糕!
      2019-08-11
      1
      回复
    • Jeffrey
      Jeffrey
      2019-08-29
      通过第三方架构(如mpvue)可以直接用rxjs npm包吗?小程序确实太弱了。
      2019-08-29
      回复
  • 法隆
    法隆
    2019-03-04

    @June

    2019-03-04
    有用
    回复
  • 阿白
    阿白
    2019-01-26

    你们的这个npm构建有问题啊!


    临时解决方案: 从github clone或下载源码到本地,npm install后执行 npm run build_cjs命令,把打包构建后的dist里的cjs目录里的文件复制到miniprogram_npm下的rxjs目录里

    2019-01-26
    有用
    回复 1
    • 冯李生
      冯李生
      2019-12-13
      最近经常用rxjs,你说的这个方式也是可以的,但是有个很大的问题,miniprogram_npm所有内容会一起跟着上传,导致整体大小远超一个rxjs.umd
      2019-12-13
      回复
登录 后发表内容