2016-11-05 15 views
8

jestem coraz node_modules/@types/webrtc/index.d.ts plik nie jest moduł z tym kodem:maszynopis typowania dać mi „index.d.ts nie jest modułem”

import * as webrtc from "webrtc"; 
const peerConnection1 = new RTCPeerConnection(); 

Mam zainstalowane typings przy użyciu npm i @types/webrtc --save-dev. Przesuwanie nad RTCPeerConnection w const peerConnection1 = new RTCPeerConnection(); adnotacjach typu wyświetlania w kodzie Visual Studio, aby przynajmniej edytor kodu widział typy. Uruchamianie tsc (lub webpack z ts-loader) kończy się niepowodzeniem z błędem.

Próbowałem już npm i webrtc --save w błędnej próbie rozwiązania tego problemu, ale nic to nie zmieniło, a ja naprawdę chcę tylko typowania w każdym razie, WebRTC jest właśnie tam, w przeglądarce, nie potrzebuję pakietu do tego. (Wsparcie na bok.)

Plik index.d.ts w rzeczywistości nie jest modułem, dotyczy tylko dwóch innych plików z interfejsami. Tak więc pomyślałem o usunięciu import * as webrtc from "webrtc"; mając nadzieję, że w jakiś sposób postacie będą nadal widoczne przez tsc. (Ale to niemożliwe, ponieważ wykluczam node_modules w pliku konfiguracyjnym TypeScript.) Kiedy to zrobię, RTCPeerConnection nie jest już rozpoznawany.

Dodawanie /// <reference src="node_modules/@types/webrtc/" /> nie pomogło, tsc mówi Nieprawidłowa składnia dyrektywy odniesienia.

Możesz przeglądać repozytorium przy minimalnej repro here on GitLab. Nie jestem zbyt dobrze zaznajomiony z przejęciami TypeScript, więc proszę, wybacz mi moją ignorancję, jeśli zamierzam rozwiązać ten problem.

Odpowiedz

18

Webrtc jest częścią przeglądarki; próbujesz zaimportować moduł. Wystarczy zaimportować (typowania) Biblioteka:

import "webrtc"; 

może trzeba użyć "moduleResolution": "node" w opcjach kompilatora. Można użyć opcji kompilatora "types": ["webrtc"] i kompilator automatycznie załaduje te typy.

5

Prawdopodobnie chcesz dodać

"types": ["webrtc"] 

do swojej tsconfig.json lub mniej Preferrably, aby korzystać

/// <reference types="webrtc" /> 

w plikach źródłowych. Oto przykład tego w swojej tsconfig.json:

{ 
    "compilerOptions": { 
     "target": "es5", 
     "sourceMap": true, 
     "noImplicitAny": true, 

     "types": ["webrtc"] 
    }, 
    "exclude": [ 
     "node_modules" 
    ] 
} 

ten nakazuje maszynopis powinien zawierać webrtc deklaracji w swojej budowie

0

Nie trzeba importować niczego, uruchom następujące:

  1. npm install --save @types/webrtc
  2. update tsconfig.json -

    "typów": [ "@ rodzai/WebRTC" ]

0

Inną opcją jest dodanie nowego pliku deklaracji *.d.ts w module, tj:

declare module 'my-module'; 
0

/// <reference types="@types/<your_types_module>" />

Możesz lub nie chcesz zrobić to w zależności od potrzeb związanych z budową i stylem, ale wydaje się to być szybkie (i katalog) ty) napraw.

Powiązane problemy