1

我正在寻找在 AMD 编译的 TypeScript 类中使用 __dirname(或等效项)的解决方案,__dirname 不存在。而且因为它是打字稿,我不能(或者我不知道如何)导入modulecontains uri,让我得到 uri。

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

我看了一下这个,但它是纯 javascript 并且我使用打字稿,我试图导入模块,但我得到一个 TS 错误。

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

4

2 回答 2

2

一种解决方案是:

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

__basePath = __dirname;

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

我知道我找到了另一种解决方案,但我不记得如何了。

于 2014-02-02T01:39:55.027 回答
0

我不使用 TypeScript,但是根据我看到的 TypeScript 代码和我对 RequireJS 的了解,我相信你应该可以这样访问module.uri

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

名字module特别。您也可以使用require.toUrl(<module name>)Url在 URL 中,而上面的变量uri在 中URI),但它似乎没有module.uri这个任务有用。一方面,您必须在调用中包含模块的名称。

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

于 2014-02-02T12:05:42.413 回答