将__dirname用于在Typescript AMD中编译的类

时间:2014-02-01 21:54:13

标签: requirejs typescript amd dirname

我正在寻找在AMD中编译的TypeScript类中使用__dirname(或等效)的解决方案,__ dirname在那里不存在。因为它是打字稿,我不能(或者我不知道如何)导入包含module的{​​{1}},允许我获取uri。

我找到了解决方案一次,但我不记得到目前为止我怎么也找不到它。

我看了一下,但它是纯粹的javascript,我使用的是typescript,我试图导入模块,但是我收到了TS错误。

https://stackoverflow.com/questions/9027429/how-to-use-nodejs-global-module-objects-in-requirejs-modules

2 个答案:

答案 0 :(得分:2)

一种解决方案是:

在app.js中,创建一个全局变量:

  

__ basePath = __dirname;

然后,在AMD脚本中,使用__basepath + 'relativePathFromBasePath'加载文件。

我知道我找到了另一个解决方案,但我记不起来了。

答案 1 :(得分:0)

我不使用TypeScript,但根据我所看到的TypeScript代码,根据我所知道的RequireJS,我相信您应该能够像这样访问module.uri

import module = require("module");
console.log(module.uri);

名称modulespecial。您也可以使用require.toUrl(<module name>)(与Url相同,而上面的变量uriURI中一样),但它似乎不如module.uri有用为了这个任务。首先,您必须在通话中包含模块的名称。

module.uri可能包含..,因此需要清理。我理解您的代码在服务器端运行,所以在Node.js中我们调用path.dirname(path.normalize(module.uri))