我有一個簡單的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被重命名?
試試看'=需要進口MO( 「ZMQ」);'的,而不是現有的'*進口從 'ZMQ' ZMQ ' –
@DavidR謝謝,但不認爲這會有所幫助 - 請參閱我的編輯。 – thepinkyman