2

TypeScript定義ファイルでJavaScriptライブラリをインポートする単純なNodejs Typescriptプロジェクトがあります。すなわち:私はこれをコンパイルすると、結果はTypeScriptコンパイラが異なる名前のTypeScript定義のモジュールを含める

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

です:べき行を除いて、よさそうだ

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

var zmq = require("zmq"); 

ではJavaScriptモジュールzmqのためのノードである必要があり、すなわち:

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

どうすればいいですか?コンパイラはこの置換を行いますか?

私の設定は、以下である:次のように

{ 
    "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" 
    ] 
} 

そしてzmqがインストールされている:

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

何かアドバイスは素晴らしいことだ - 感謝。

EDIT:

[OK]をzeromqは、私が使用したいzeromqライブラリーの最新の名前ですが、タイピングはまだzmqと呼ばれているので、問題があることができるよう。だから、コンパイル時にコンパイラがzmqをzeromqにマップする必要があると判断できないようです(なぜそうでしょうか)。

このように、@ types/zmqの名前が変更されていないことがありますか?

+0

を;'代わりに、既存の '輸入の* 'zmq' からzmqとして' –

+0

@DavidRありがとう、しかし、それは助けになるとは思わない - 私の編集を参照してください。 – thepinkyman

答えて

0

これで、@ types/zmqの名前が変更されるのを避ける方法がありますか?

このコンテンツとtypes.d.tsファイルを追加:ちょうど `インポートMoは=( "zmq")を必要としてみてください

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

ありがとう、私が後にしたスニペットだった。 – thepinkyman

関連する問題