小程序
小游戏
企业微信
微信支付
扫描小程序码分享
构建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的入口
请问如何解决?你们自己可以试试吗?
5 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
用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);
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
这是很扯蛋的一个地方,还是umd比较方便
直接使用完整的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;
是的,但是微信自己搞的这套使用自定义npm包的方案岂不是废了,自己需要修补下吧?
@June
你们的这个npm构建有问题啊!
临时解决方案: 从github clone或下载源码到本地,npm install后执行 npm run build_cjs命令,把打包构建后的dist里的cjs目录里的文件复制到miniprogram_npm下的rxjs目录里
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
用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);
这是很扯蛋的一个地方,还是umd比较方便
直接使用完整的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;
是的,但是微信自己搞的这套使用自定义npm包的方案岂不是废了,自己需要修补下吧?
@June
你们的这个npm构建有问题啊!