我正在寻找在AMD中编译的TypeScript类中使用__dirname(或等效)的解决方案,__ dirname在那里不存在。因为它是打字稿,我不能(或者我不知道如何)导入包含module
的{{1}},允许我获取uri。
我找到了解决方案一次,但我不记得到目前为止我怎么也找不到它。
我看了一下,但它是纯粹的javascript,我使用的是typescript,我试图导入模块,但是我收到了TS错误。
答案 0 :(得分:2)
一种解决方案是:
在app.js中,创建一个全局变量:
__ basePath = __dirname;
然后,在AMD脚本中,使用__basepath + 'relativePathFromBasePath'
加载文件。
我知道我找到了另一个解决方案,但我记不起来了。
答案 1 :(得分:0)
我不使用TypeScript,但根据我所看到的TypeScript代码,根据我所知道的RequireJS,我相信您应该能够像这样访问module.uri
:
import module = require("module");
console.log(module.uri);
名称module
为special。您也可以使用require.toUrl(<module name>)
(与Url
相同,而上面的变量uri
与URI
中一样),但它似乎不如module.uri
有用为了这个任务。首先,您必须在通话中包含模块的名称。
module.uri
可能包含..
,因此需要清理。我理解您的代码在服务器端运行,所以在Node.js中我们调用path.dirname(path.normalize(module.uri))
。