TypeScript编译器包含TypeScript定义中不同名称的模块

我有一个简单的Nodejs Typescript项目,通过他们的TypeScript定义文件导入一些JavaScript库。 即:

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"); 

应该是zmq的Node JavaScript模块,即:

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

我如何让编译器做这个replace?

我的configuration如下:

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

任何build议将是伟大的 – 谢谢。

编辑:

好的,所以问题可能是因为zeromq是我想使用的zeromq库的最新名称,但types仍然被称为zmq。 所以看来,编译执行时,编译器无法确定zmq应该映射到zeromq(为什么会这样)。

那么有没有办法解决这个问题呢,就是把@ types / zmq改名了?

那么有没有办法解决这个问题呢,就是把@ types / zmq改名了?

添加这个内容types.d.ts文件:

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