2015-04-22 109 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路径放到一个'