Импорт esm2015 в deno

Именованный импорт из модуля UMD (разве UMD не должны работать в браузерах, а Deno похож на браузер?):

import { range } from "https://unpkg.com/@reactivex/[email protected]/dist/global/rxjs.umd.js";
import { operators } from "https://unpkg.com/@reactivex/[email protected]/dist/global/rxjs.umd.js"; 

приводит к

error: Uncaught SyntaxError: The requested module 'https://unpkg.com/@reactivex/[email protected]/dist/global/rxjs.umd.js' does not provide an export named 'operators'
error: Uncaught SyntaxError: The requested module 'https://unpkg.com/@reactivex/[email protected]/dist/global/rxjs.umd.js' does not provide an export named 'range'

также импорт напрямую из ES2015

import { range } from "https://unpkg.com/@reactivex/[email protected]/dist/esm2015/index.js";
import { filter, map } from "https://unpkg.com/@reactivex/[email protected]/dist/esm2015/operators/index.js";

кажется, работает, загружает много внутренних модулей, а затем вылетает:

Download https://unpkg.com/@reactivex/[email protected]/dist/esm2015/internal/observable/fromEvent
/// downloads 150 internal modules
Download https://unpkg.com/@reactivex/[email protected]/dist/esm2015/internal/util/Immediate.js  // 5 minutes later
error: Import 'https://unpkg.com/@reactivex/[email protected]/dist/esm2015/internal/symbol/observable.js' failed: 500 Internal Server Error
    at https://unpkg.com/@reactivex/[email protected]/dist/esm2015/index.js:4:0

RxJS кажется довольно хорошо поддерживаемой библиотекой - я не думаю, что она неправильно упакована, но, поскольку она начинает загружать внутренние модули es2015, я предположил, что импорт выполнен правильно.


ОБНОВЛЕНИЕ: использование UMD остается нерешенным, до сих пор неясно, как работает 'dist/global/rxjs.umd.js'


person BogdanBiv    schedule 12.02.2021    source источник
comment
следует ли разделить это на два вопроса для UMD/ES2015?   -  person BogdanBiv    schedule 12.02.2021


Ответы (1)


Где-то задокументировано - не могу найти ссылку - что unpkg разбивает пакеты esm2015 на подпакеты (esm2015/operators/index.js)

Однако не удалось найти способ импорта из UMD:

// @deno-types="https://unpkg.com/[email protected]/index.d.ts"

//unpkg
import { range } from "https://unpkg.com/@reactivex/[email protected]/dist/esm2015/index.js";
import { filter, map } from "https://unpkg.com/@reactivex/[email protected]/dist/esm2015/operators/index.js";

// skypack or pika.dev
import { range }from 'https://cdn.skypack.dev/rxjs';    // WORKS!!!
import { map, filter }from 'https://cdn.skypack.dev/rxjs/operators';

// jspm
import { range } from "https://jspm.dev/npm:[email protected]";   // WORKS!!!
import { map, filter } from "https://jspm.dev/npm:[email protected]/operators";

// code to verify imports work properly
range(1, 200)
  .pipe(
    filter((x:number) => x % 2 === 1),
    map((x:number) => x + x)
  )
  .subscribe((x:number) => console.log(x));

/*
2
6
10
14
...
390
394
398
*/

Требуется дальнейшее изучение:

  • https://cdn.esm.sh =› esm.sh заполнит внутренние модули узла (fs,os и т. д.) с https://deno.land/std/node для поддержки некоторых модулей для работы в Дено
  • skypack.dev, кажется, может поддерживать больше функций, чем предполагалось изначально import { range } from "https://cdn.skypack.dev/pin/[email protected]/mode=imports/optimized/rxjs.js";
person BogdanBiv    schedule 15.02.2021