2012-11-14 117 views
4

如何導入駐留在TypeScript中的node_modules文件夾中的節點模塊?在TypeScript中導入節點模塊

我得到一個錯誤信息(名稱「」異步'在當前範圍內不存在),當我嘗試編譯下面的一段打字稿代碼:

// Converted from: var async = require('async'); 
import async = module('async'); 

回答

1

您需要創建定義文件,包括這個:

module "async" {} 

然後在打字稿代碼添加引用這個定義文件

///<reference path='definition-file.d.ts' /> 

import async = module('async'); 
+0

謝謝。儘管如此,標籤並不是必需的。 – soheilpro

+1

你想把它放在一個單獨的文件中(按照慣例它應該被稱爲async.d.ts),然後你需要引用它。 將其保存在單獨文件中的額外原因是,您可能想要聲明異步的導出,例如函數,全局變量和在那裏聲明的類。 –

+0

這對我有用,但是然後我得到編譯錯誤,因爲空模塊定義沒有從實際npm模塊導出的方法。我有一個模塊d.ts文件,但無法弄清楚如何將它的定義連接到我的模塊墊片。 –

1

打字稿中的標準「import blah = require('x')」語義不能用於節點模塊。

解決最簡單的方法是定義接口和使用需要明確,而不是進口:

// You can put this in an external blah.d file if you like; 
// remember, interfaces do not emit any code when compiled. 
interface qOrm { 
    blah:any; 
} 

declare var require:any; 
var qOrm:qOrm = require("../node_modules/q-orm/lib/q-orm"); 

var x = qOrm.blah; 
0
npm install --save-dev @types/async 
npm install --save async 

而且語法:

import * as async from "async"