2

J'ai un simple projet Nodejs Typescript qui importe certaines bibliothèques JavaScript via leurs fichiers de définition TypeScript. à savoir:Compilateur TypeScript pour inclure des modules de définitions TypeScript avec un nom différent

import * as zmq from 'zmq' 
const sock = zmq.socket("push"); 

Quand je compile cela, le résultat est:

"use strict"; 
exports.__esModule = true; 
var zmq = require("zmq"); 
var sock = zmq.socket("push"); 
//# sourceMappingURL=index.js.map 

Ce qui semble bon, sauf si la ligne:

var zmq = require("zmq"); 

doit être le module JavaScript nœud pour ZMQ, ie:

var zmq = require("../node_modules/zeromq"); 

Comment puis-je m Ake le compilateur faire cette substitution?

Ma config est suivante:

{ 
    "compilerOptions": { 
    "declaration": true, 
    "module": "commonjs", 
    "moduleResolution": "node", 
    "noImplicitAny": true, 
    "outDir": "./lib", 
    "preserveConstEnums": true, 
    "removeComments": true, 
    "sourceMap": true, 
    "typeRoots": [ 
     "./node_modules/@types" 
    ] 
    }, 
    "include": [ 
    "node_modules/@types/**/*.d.ts", 
    "src/**/*" 
    ], 
    "exclude": [ 
    "node_modules", 
    "**/*-spec.ts", 
    "!node_modules/@types/**/*.d.ts" 
    ] 
} 

Et ZMQ est installé comme suit:

npm install zeromq --save 
npm install @types/zmq --save 

Tout conseil serait génial - merci.

EDIT:

Ok, donc la question pourrait être parce que zeromq est le dernier nom de la bibliothèque zeromq je souhaite utiliser, mais les typages est encore appelé ZMQ. Il semble donc que lorsque la compilation effectuée, le compilateur ne peut pas déterminer que zmq devrait correspondre à zeromq (et pourquoi le ferait-il).

Y aurait-il un moyen de contourner cela, à moins que @ types/zmq ne soit renommé?

+0

Juste essayer 'import mo = require ("ZMQ"),' au lieu de votre existant 'importer * comme ZMQ de 'ZMQ' ' –

+0

@DavidR merci, mais ne pense pas que cela aiderait - voir mon edit. – thepinkyman

Répondre

0

Y aurait-il un moyen de contourner cela, à moins que @ types/zmq ne soit renommé?

Ajouter un fichier types.d.ts avec ce contenu:

declare module "zeromq" { 
    export * from "zmq" 
} 
+0

Merci, c'était l'extrait que je recherchais. – thepinkyman