Ich verwende die Bibliothek Q
in einem Skript, das ich in einem Web-Arbeiter und in Node ausführen möchte. Wenn ich q.d.ts
wie so Referenz:Verwendung von .d.ts. Dateien für JS für Knoten und einen Web-Worker
/// <reference path="../typings/q/Q.d.ts" />
if(importScripts != undefined && WorkerGlobalScope == undefined
&& typeof module !== 'undefined' && module.exports){
// We're in a Node (child) process
var Q = require("q")
}else{
// We're in a web-worker
importScripts('q');
}
ich folgende Fehlermeldung erhalten, die schön in diesen answer erklärt:
error TS2300: Duplicate identifier 'Q'.
aber wenn ich var Q = require("q")
mit import Q = require("q")
ersetzen, bekomme ich diesen Fehler, weil die Import-Anweisung innerhalb der if
Klausel verschachtelt und nicht auf der obersten Ebene des Skripts:
An import declaration can only be used in a namespace or module.
Gibt es eine Möglichkeit, Q
in, so dass es mit require()
und importScripts()
des Web-Arbeiters funktioniert?
Dies funktioniert gut, wenn ein '.d.ts' Datei ein Modul deklariert, aber für diejenigen, die don‘ t, wie zum Beispiel ['require.d.ts'] (https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/q/Qdts), ergibt sich das 'import_r = require (' requirejs ')' Fehler: 'Kann Modul 'requirejs' nicht finden.' – Jthorpe
Ich habe [eine andere verwandte Frage] (http://stackoverflow.com/questions/38016793), die wäre toll, wenn Sie einen Blick darauf werfen könnten. Vielen Dank! – Jthorpe