2014-10-05 57 views
4

我正在使用typescript中的node.js/express項目。我沒有任何問題導入東西,但我必須使用以下格式,這是醜陋的/不能擴展使用require()函數沒有路徑

import MyModule = require("../../ModuleFolder/MyModule"); 

假設我的模塊看起來像這樣

export module MyModule 
{ 
    export function doStuff():void 
    { 
     //do stuff here 
    } 
} 

我無法弄清楚如何在模塊和類拔不指定路徑。理想情況下,我希望能夠將其拉入像

import MyModule = require("MyModule"); 

有什麼我可以做,使這可能或改善這種實現?

更新:最終,我最終使用這個模塊,它工作得很好。

回答

1

,如果你在

var Name = require ('name') 

指定腳本不是自動的NodeJS眺望node_modules爲目錄「名稱」和裏面的模塊定義。如果你有其他模塊,那麼你需要指定路徑。 或者在node_modules指向你的模塊目錄創建符號鏈接。

+0

有趣的想法,我也不會想到這一點。 – 2014-10-05 19:14:35

2

這樣做的最好方法是製作NPM模塊(它們可以是私有的,只是不要npm publish),並將它們放到您自己的node_modules文件夾中。由於using require() automatically looks for these folders,你可以以這樣的方式,因爲這利用這個你身邊......

模塊./node_modules/MyModule/index.ts

export module MyModule 
{ 
    export function doStuff():void 
    { 
     //do stuff here 
    } 
} 

您可以在./node_modules/MyModule文件夾中運行npm init創建package.json文件。

主文件:用符號鏈接./src/some/other/folder/or/elsewhere/main.ts

import MyModule = require('MyModule'); 
+0

如果我瞭解這個index.ts只會導入它?或者我實際上必須在那裏實施?因爲你的演示似乎倒退了。 – ed209 2014-10-05 19:21:07

+0

@ ed209'index.ts'將是你的包的*主文件*,並且如果不是你所有的邏輯,它都會有一些。是的,它可能只是進口產品,你真的可以把通常放在你的模塊中的東西放進去。它可以命名爲'abcmainfile.ts',只要你在'package.json'中命名。 – 2014-10-05 19:22:55