Запуск Наблюдаемый с Javascript - PullRequest
       0

Запуск Наблюдаемый с Javascript

0 голосов
/ 04 февраля 2019

Я пытаюсь использовать Observable с обычным Javascript.Следуйте инструкциям здесь: https://www.npmjs.com/package/rxjs

Это последовательность - не уверен, в чем проблема:

    npm install rxjs
    npm WARN test@1.0.0 No description
    npm WARN test@1.0.0 No repository field.

    + rxjs@6.4.0
    removed 13 packages, updated 1 package and audited 2 packages in 3.163s
    found 0 vulnerabilities

    ------------------------------------------------------------
    » cat package.json                                                                                                                                                                
        {
          "name": "test",
          "version": "1.0.0",
          "description": "",
          "main": "counter.js",
          "dependencies": {
            "rxjs": "^6.4.0"
          },
          "devDependencies": {},
          "scripts": {
            "test": "echo \"Error: no test specified\" && exit 1"
          },
          "keywords": [],
          "author": "",
          "license": "ISC"
        }

    ------------------------------------------------------------
    » cat obs.js  
      import { range } from 'rxjs';
      import { map, filter } from 'rxjs/operators';

      range(1, 200).pipe(
        filter(x => x % 2 === 1),
        map(x => x + x)
      ).subscribe(x => console.log(x));
    ------------------------------------------------------------
    » node obs.js                                                                                                                                                                     
        obs.js:1
        (function (exports, require, module, __filename, __dirname) { import { range } from 'rxjs';

        SyntaxError: Unexpected token {
            at new Script (vm.js:79:7)
            at createScript (vm.js:251:10)
            at Object.runInThisContext (vm.js:303:10)
            at Module._compile (internal/modules/cjs/loader.js:656:28)
            at Object.Module._extensions..js (internal/modules/cjs/loader.js:699:10)
            at Module.load (internal/modules/cjs/loader.js:598:32)
            at tryModuleLoad (internal/modules/cjs/loader.js:537:12)
            at Function.Module._load (internal/modules/cjs/loader.js:529:3)
enter code here            at Function.Module.runMain (internal/modules/cjs/loader.js:741:12)
            at startup (internal/bootstrap/node.js:285:19)
------------------------------------------------------------

1 Ответ

0 голосов
/ 04 февраля 2019

Что-то не так с тем, как импорт модуля работает с пакетом RxJS.Всякий раз, когда он импортируется с использованием import * as rxjs from "rxjs", все экспортируемые функции присоединяются к свойству default rxjs.Затем вы должны уничтожить их из этого свойства вместо rxjs.Например, это должно работать, если вы используете следующую команду:

Команда (обратите внимание на расширение .mjs):

node --experimental-modules obs.mjs

Код:

import * as rxjs from 'rxjs';
const {range} = rxjs.default;
console.log(typeof range);

Вы также можете просто не использовать модули и просто использовать операторы require:

Команда (обратите внимание на расширение non .mjs):

node obs.js

Код:

const { range } = require("rxjs");
const { map, filter } = require("rxjs/operators");

range(1, 200).pipe(
    filter(x => x % 2 === 1),
    map(x => x + x)
).subscribe(x => console.log(x));

Также учтите этот вопрос на GitHub Предоставьте именованные экспорты # 3745

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...