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