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