2015-04-22 159 views
0

當我嘗試導入本地文件時,它會在運行時引發錯誤,但使用tsc工作編譯它。當我爲node.js工作時,typescript在編譯時拋出一個錯誤。node.js/typescript找不到本地模塊

當我做

import A = require("./A"); 

node.js的抱怨,它無法找到一個模塊,打字稿編譯就好了。

但是,當我將其更改爲

import A = require("./js/A"); 

node.js中可以找到的模塊,但打字稿告訴我有一個錯誤。

佈局是這樣的:

js 
\- A.ts 
\- B.ts 

我單獨編譯的文件,我已經嘗試過尋找改變的打字稿編譯器的根目錄下,但我無法找到任何東西。

+0

您是否試圖將A導入B?如果是的話,你應該做'import A = require(「A」);' – Martin

+0

@Martin如果我這樣做了打字稿編譯,但是然後node.js代碼不起作用,因爲node.js期望內部模塊是相對於根目錄(「./js/A」),但打字稿期望它與打字稿文件相關(「./A」) – WebFreak001

回答

0

沒有看到你如何編譯TypeScript,也沒有看到你是如何試圖從節點嘗試require()這些文件,很難回答這個問題。

即使如此,我可以告訴你,打字稿和node.js的期待require()給予這是相對於文件做需要的路徑。

如果我有一個js/A.ts看起來像這樣:

import B = require("./B"); 
console.log(B.thing); 

這看起來像所以JS/B.ts:

var myStuff = { 
    thing: "I'm a thing!" 
} 
export = myStuff; 

我可以再編譯文件,而只需tsc -m commonjs ./js/A.ts

然後我可以運行與節點:node ./js/A.js並會看到輸出:

I'm a thing! 
+0

OK剛試過,香草nodejs工作正常,但使用node-webkit它不起作用。 https://github.com/nwjs/nw.js/wiki/Differences-of-JavaScript-contexts – WebFreak001

+0

@ WebFreak001您如何在node-webkit中加載js文件?你仍然必須爲這些使用'require()'。如果你把TypeScript編譯過的js路徑放到一個'