我有一个简单的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");
如何让编译器执行此替换?
我的配置如下:
{
"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 :(得分:1)
那么有没有办法绕过这个,缺少@ types / zmq重命名?
使用以下内容添加types.d.ts文件:
declare module "zeromq" {
export * from "zmq"
}