ΠΠ΄ΡΠ°Π²ΡΡΠ²ΡΠΉΡΠ΅!
Π― ΠΏΡΡΠ°Π»ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ peerJs Ρ angular 8, Π½ΠΎ Π½Π΅ ΡΠΌΠΎΠ³.
ΠΠ½Π΅ Π½Π΅ ΡΠ΄Π°Π»ΠΎΡΡ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.
Π― ΡΠΎΠ·Π΄Π°Π» ΠΊΡΠΎΡΠ΅ΡΠ½ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ (https://github.com/furozen/PeerJs-example), ΡΡΠΎΠ±Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΡ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ:
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.
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'
~~~~
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)
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)
ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΌΠΎΠ΄ΡΠ»Ρ Π½Π° Β«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
ΠΡΠΈΡΠΈΡΠ΅ΡΠΊΠ°Ρ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ: Π·Π°ΠΏΡΠΎΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ - ΡΡΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅
ΠΡΠΎ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π²Π»ΠΈΡΡΡ Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ ΠΈΠ»ΠΈ ΠΏΡΠΎΡΠ΅ΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ.
ΠΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± -
import Peer from "peerjs"
, Π²Ρ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΠ΅ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ Π²Π΅Π±-ΠΏΠ°ΠΊΠ΅ΡΠ°:ΠΠ ΠΠΠ£ΠΠ ΠΠΠΠΠΠΠ Π² ./node_modules/peerjs/dist/peerjs.min.js 1: 292-296
ΠΡΠΈΡΠΈΡΠ΅ΡΠΊΠ°Ρ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ: Π·Π°ΠΏΡΠΎΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ - ΡΡΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΡΠΎ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π²Π»ΠΈΡΡΡ Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ ΠΈΠ»ΠΈ ΠΏΡΠΎΡΠ΅ΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ.
ΠΠ°, ΡΡΠΎ ΡΠ°Π±ΠΎΡΠΈΠΉ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄, ΡΠΏΠ°ΡΠΈΠ±ΠΎ.
ΠΠ°ΠΊΠ»ΡΡΠΈΡΡ:
Ρ Π²Π°Ρ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ "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=
Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π² ΠΌΠΎΠ΅ΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ΅ Ρ ΠΎΡΠ²Π΅ΡΠ΅Π½Π½ΡΠΌΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ ΡΡΠΎ-ΡΠΎ ΠΏΡΠΎΡΡΠΎ Π»ΠΎΠΌΠ°Π΅ΡΡΡ, Π° Π±ΡΠ°ΡΠ·Π΅Ρ Ρ ΡΠ°Π΄ΠΎΡΡΡΡ ΠΏΠΎΠ΄Π½ΠΈΠΌΠ°Π΅Ρ ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π² Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΡ ΠΎΠ±Π»Π°ΡΡΡ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΈ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ ΡΠ°Π±ΠΎΡΡ.
Π‘Π°ΠΌΡΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ
ΠΠ·Π²ΠΈΠ½ΠΈΡΠ΅! ΡΡΠΎ Π±ΡΠ» ΠΏΠ°ΡΡ Π² index.html, ΠΊΠΎΡΠΎΡΡΠΉ Ρ Π΄ΠΎΠ±Π°Π²ΠΈΠ» ΠΈ Π·Π°Π±ΡΠ» ΡΠ΄Π°Π»ΠΈΡΡ:
Π±Π΅Π· ΡΡΠΎΠ³ΠΎ ΠΏΠ°ΡΡΠ° Ρ ΠΏΠΎΠ»ΡΡΠΈΠ»:
Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ.
ΡΠ°ΠΊ ΡΡΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΠΎΡΠΈΠ±ΠΊΡ ΡΠ°ΠΌ: https://github.com/furozen/PeerJs-example