Peerjs: НСвозмоТно ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Peer 1.0.1 Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Angular 8

Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΉ Π½Π° 10 июл. 2019  Β·  9ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ  Β·  Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: peers/peerjs

ЗдравствуйтС!
Π― пытался ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ peerJs с angular 8, Π½ΠΎ Π½Π΅ смог.
МнС Π½Π΅ ΡƒΠ΄Π°Π»ΠΎΡΡŒ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.

Π― создал ΠΊΡ€ΠΎΡˆΠ΅Ρ‡Π½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ (https://github.com/furozen/PeerJs-example), Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ:

1

import * as Peer from 'peerjs';

ошибка компиляции:

ERROR in src/app/app.component.ts:14:16 - error TS2351: Cannot use 'new' with an expression whose type lacks a call or construct signature.

14     let peer = new Peer();
                  ~~~~~~~~~~

  src/app/app.component.ts:3:1
    3 import * as Peer from 'peerjs';
      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    Type originates at this import. A namespace-style import cannot be called or constructed, and will cause a failure at runtime. Consider using a default import or import require here instead.

2

import { Peer } from 'peerjs'

ошибка компиляции:

ERROR in src/app/app.component.ts:3:10 - error TS2305: Module '"../../node_modules/peerjs"' has no exported member 'Peer'.

3 import { Peer } from 'peerjs'
         ~~~~

3

import Peer from 'peerjs'

ошибка компиляции:

WARNING in ./node_modules/peerjs/dist/peerjs.min.js 1:292-296
Critical dependency: the request of a dependency is an expression

врСмя выполнСния:

Uncaught ReferenceError: parcelRequire is not defined
    at push../node_modules/peerjs/dist/peerjs.min.js.parcelRequire.vHo1 (peerjs.min.js:1)
    at Object../node_modules/peerjs/dist/peerjs.min.js (peerjs.min.js:1)
    at __webpack_require__ (bootstrap:79)
    at Module../src/app/app.component.ts (main.js:112)
    at __webpack_require__ (bootstrap:79)
    at Module../src/app/app.module.ts (app.component.ts:11)
    at __webpack_require__ (bootstrap:79)
    at Module../src/main.ts (main.ts:1)
    at __webpack_require__ (bootstrap:79)
    at Object.0 (main.ts:12)

4

import Peer = require('peerjs');

ошибка компиляции:


    ERROR in src/app/app.component.ts(3,1): error TS1202: Import assignment cannot be used when targeting ECMAScript modules. Consider using 'import * as ns from "mod"', 'import {a} from "mod"', 'import d from "mod"', or another module format instead

врСмя выполнСния:

AppComponent_Host.ngfactory.js? [sm]:1 ERROR ReferenceError: Peer is not defined
    at new AppComponent (app.component.ts:15)
    at createClass (core.js:27863)
    at createDirectiveInstance (core.js:27685)
    at createViewNodes (core.js:38315)
    at createRootView (core.js:38187)
    at callWithDebugContext (core.js:39716)
    at Object.debugCreateRootView [as createRootView] (core.js:38953)
    at ComponentFactory_.create (core.js:26827)
    at ComponentFactoryBoundToModule.create (core.js:22791)
    at ApplicationRef.bootstrap (core.js:35343)

Π‘Π°ΠΌΡ‹ΠΉ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π˜Π·Π²ΠΈΠ½ΠΈΡ‚Π΅! это Π±Ρ‹Π» ΠΏΠ°Ρ‚Ρ‡ Π² index.html, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ я Π΄ΠΎΠ±Π°Π²ΠΈΠ» ΠΈ Π·Π°Π±Ρ‹Π» ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ:

  <script>
    window.global  = window;
    var parcelRequire;
  </script>

Π±Π΅Π· этого ΠΏΠ°Ρ‚Ρ‡Π° я ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»:

Uncaught ReferenceError: parcelRequire is not defined
    at push../node_modules/peerjs/dist/peerjs.min.js.parcelRequire.vHo1 (peerjs.min.js:1)
    at Object../node_modules/peerjs/dist/peerjs.min.js (peerjs.min.js:1)
    at __webpack_require__ (bootstrap:79)
    at Module../src/app/app.component.ts (main.js:112)
    at __webpack_require__ (bootstrap:79)
    at Module../src/app/app.module.ts (app.component.ts:12)
    at __webpack_require__ (bootstrap:79)
    at Module../src/main.ts (main.ts:1)
    at __webpack_require__ (bootstrap:79)
    at Object.0 (main.ts:12)

Π²ΠΎ врСмя выполнСния.

Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΊΡƒ Ρ‚Π°ΠΌ: https://github.com/furozen/PeerJs-example

ВсС 9 ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

ИзмСнСниС модуля Π½Π° Β«CommonJsΒ» ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΊΡƒ компиляции, Π½ΠΎ Π½Π΅ исправляСт ΠΎΡˆΠΈΠ±ΠΊΡƒ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния: всС Π΅Ρ‰Π΅ случай β„–3.

Ρ‚ΠΎ

ReferenceError: parcelRequire is not defined

ΠΌΠΎΠΆΠ½ΠΎ ΡΠ²ΡΠ·Π°Ρ‚ΡŒ с этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ: https://github.com/parcel-bundler/parcel/issues/1401

ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ способ - import Peer from "peerjs" , Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚Π΅ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ Π²Π΅Π±-ΠΏΠ°ΠΊΠ΅Ρ‚Π°:

ΠŸΠ Π•Π”Π£ΠŸΠ Π•Π–Π”Π•ΠΠ˜Π• Π² ./node_modules/peerjs/dist/peerjs.min.js 1: 292-296
ΠšΡ€ΠΈΡ‚ΠΈΡ‡Π΅ΡΠΊΠ°Ρ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ: запрос зависимости - это Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅

Π­Ρ‚ΠΎ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π²Π»ΠΈΡΡ‚ΡŒ Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ ΠΈΠ»ΠΈ процСсс компиляции.

https://github.com/parcel-bundler/parcel/issues/2883

ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ способ - import Peer from "peerjs" , Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚Π΅ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ Π²Π΅Π±-ΠΏΠ°ΠΊΠ΅Ρ‚Π°:

ΠŸΠ Π•Π”Π£ΠŸΠ Π•Π–Π”Π•ΠΠ˜Π• Π² ./node_modules/peerjs/dist/peerjs.min.js 1: 292-296
ΠšΡ€ΠΈΡ‚ΠΈΡ‡Π΅ΡΠΊΠ°Ρ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ: запрос зависимости - это Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅

Π­Ρ‚ΠΎ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π²Π»ΠΈΡΡ‚ΡŒ Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ ΠΈΠ»ΠΈ процСсс компиляции.

ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊ / посылочка β„–2883

Π”Π°, это Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄, спасибо.
Π—Π°ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ:
Ρƒ вас Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ "esModuleInterop": true, Π² tsconfig.json
ΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ lib ΠΊΠ°ΠΊ: import Peer from "peerjs"

Π˜Π·Π²ΠΈΠ½ΠΈΡ‚Π΅! это Π±Ρ‹Π» ΠΏΠ°Ρ‚Ρ‡ Π² index.html, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ я Π΄ΠΎΠ±Π°Π²ΠΈΠ» ΠΈ Π·Π°Π±Ρ‹Π» ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ:

  <script>
    window.global  = window;
    var parcelRequire;
  </script>

Π±Π΅Π· этого ΠΏΠ°Ρ‚Ρ‡Π° я ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»:

Uncaught ReferenceError: parcelRequire is not defined
    at push../node_modules/peerjs/dist/peerjs.min.js.parcelRequire.vHo1 (peerjs.min.js:1)
    at Object../node_modules/peerjs/dist/peerjs.min.js (peerjs.min.js:1)
    at __webpack_require__ (bootstrap:79)
    at Module../src/app/app.component.ts (main.js:112)
    at __webpack_require__ (bootstrap:79)
    at Module../src/app/app.module.ts (app.component.ts:12)
    at __webpack_require__ (bootstrap:79)
    at Module../src/main.ts (main.ts:1)
    at __webpack_require__ (bootstrap:79)
    at Object.0 (main.ts:12)

Π²ΠΎ врСмя выполнСния.

Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΊΡƒ Ρ‚Π°ΠΌ: https://github.com/furozen/PeerJs-example

Π― Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ это Π½Π΅ БАГ, ΠΎΠ½ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² ΠΌΠΎΠ΅ΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ angular 8.
Π²Π°ΠΌ слСдуСт Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Ρ„Π°ΠΉΠ» index.d.ts. Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΉΡ‚ΠΈ этот Ρ„Π°ΠΉΠ» Π² ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅.
НЕ Π½ΡƒΠΆΠ΅Π½ ΠΈΠΌΠΏΠΎΡ€Ρ‚ peerjs! просто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ класс Peer, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π±Ρ‹Π» объявлСн Π² Ρ„Π°ΠΉΠ»Π΅ index.d.ts.

Π˜Ρ‚Π°ΠΊ, я Π΄ΠΎΠ±Π°Π²ΠΈΠ» peerjs (v1.1.0) Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Angular. Π˜Π·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Ρƒ мСня Π½Π΅ Π±Ρ‹Π»ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ΠΈΠ»ΠΈ ошибок. Peerjs Π½Π° самом Π΄Π΅Π»Π΅ Π½Π΅ использовался, ΠΏΠΎΠΊΠ° Π²Ρ‹ Π½Π΅ ΠΏΡ€ΠΎΡˆΠ»ΠΈ Ρ‡Π΅Ρ€Π΅Π· 2-3 шага, ΠΈ ΠΎΠ½ просто Ρ€Π°Π±ΠΎΡ‚Π°Π». Π― Π΄ΠΎΠ±Π°Π²ΠΈΠ» Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΅Ρ‰Π΅ ΠΎΠ΄Π½Ρƒ Ρ‡Π°ΡΡ‚ΡŒ, которая запускала peerjs ΠΏΡ€ΠΈ ΠΏΡ€ΠΈΠ·Π΅ΠΌΠ»Π΅Π½ΠΈΠΈ, ΠΈ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚ΠΎΠ³Π΄Π° я Π½Π°Ρ‡Π°Π» Π²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΊΡƒ parcelRequire. Π― Π΄ΠΎΠ±Π°Π²ΠΈΠ» ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ parcelRequire ΠΈΠ· https://github.com/peers/peerjs/issues/552#issuecomment -510976519, ΠΈ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΠ½Π°, ΠΏΠΎΡ…ΠΎΠΆΠ΅, просто Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚. Π― ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°ΡŽ, Ρ‡Ρ‚ΠΎ Π³Π΄Π΅-Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ состояниС Π³ΠΎΠ½ΠΊΠΈ, Π½ΠΎ я Π½Π΅ ΠΏΠΎΡ‚Ρ€Π°Ρ‚ΠΈΠ» врСмя, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ³Π»ΡƒΠ±ΠΈΡ‚ΡŒΡΡ Π² это.

Π’Π° ΠΆΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π½Π° Angular 9. Π― Π±Π΅Π·ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΠ» esModuleInterop: true ΠΈ allowSyntheticDefaultImports: true Π² tsconfig.json. Π§Ρ‚ΠΎ новСнького?

это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ для мСня ΠΊΠ°ΠΊ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ΅ исправлСниС Π² index.html согласно ΡΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΡŽ @furozen .

<script>
    var parcelRequire;
  </script>

Π­Ρ‚ΠΎ останСтся ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ Π² 2021 Π³ΠΎΠ΄Ρƒ ΠΏΡ€ΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π΅ peerjs Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ lit-element .
ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, ΠΏΠΎ-Π²ΠΈΠ΄ΠΈΠΌΠΎΠΌΡƒ, связана с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ построСнный Π²Ρ‹Π²ΠΎΠ΄ peerjs начинаСтся с:

parcelRequire=

Π° Π½Π΅, ΠΊΠ°ΠΊ Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅, объявлСниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ

var parcelRequire=

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π² ΠΌΠΎΠ΅ΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ с освСщСнными элСмСнтами Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ просто ломаСтся, Π° Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ с Ρ€Π°Π΄ΠΎΡΡ‚ΡŒΡŽ ΠΏΠΎΠ΄Π½ΠΈΠΌΠ°Π΅Ρ‚ эту ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Π² Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½ΡƒΡŽ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ видимости ΠΈ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ.

Π‘Ρ‹Π»Π° Π»ΠΈ эта страница ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ?
0 / 5 - 0 Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ΠΈ