2

我有一個簡單的Nodejs Typescript項目,它通過TypeScript定義文件導入一些JavaScript庫。即: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"); 

我該怎麼辦ake編譯器做這個替換嗎?

我的配置是如下:

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

任何意見將是巨大的 - 感謝。

編輯:

好了,所以這個問題可能是因爲zeromq是zeromq庫我希望用最新的名字,但分型仍稱ZMQ。所以看起來編譯執行時編譯器不能確定zmq應該映射到zeromq(爲什麼會這樣)。

所以會有解決方法,短的@ types/zmq被重命名?

+0

試試看'=需要進口MO( 「ZMQ」);'的,而不是現有的'*進口從 'ZMQ' ZMQ ' –

+0

@DavidR謝謝,但不認爲這會有所幫助 - 請參閱我的編輯。 – thepinkyman

回答

0

所以會有解決方法,短的@ types/zmq被重命名?

添加types.d.ts文件與此內容:

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

謝謝,這是我之後的片段。 – thepinkyman