我正在寻找在 AMD 编译的 TypeScript 类中使用 __dirname(或等效项)的解决方案,__dirname 不存在。而且因为它是打字稿,我不能(或者我不知道如何)导入modulecontains uri,让我得到 uri。
我找到了一次解决方案,但我不记得怎么找到了,到目前为止我也找不到了。
我看了一下这个,但它是纯 javascript 并且我使用打字稿,我试图导入模块,但我得到一个 TS 错误。
我正在寻找在 AMD 编译的 TypeScript 类中使用 __dirname(或等效项)的解决方案,__dirname 不存在。而且因为它是打字稿,我不能(或者我不知道如何)导入modulecontains uri,让我得到 uri。
我找到了一次解决方案,但我不记得怎么找到了,到目前为止我也找不到了。
我看了一下这个,但它是纯 javascript 并且我使用打字稿,我试图导入模块,但我得到一个 TS 错误。
一种解决方案是:
在 app.js 中,创建一个全局变量:
__basePath = __dirname;
然后,在 AMD 脚本中,使用__basepath + 'relativePathFromBasePath'加载文件。
我知道我找到了另一种解决方案,但我不记得如何了。
我不使用 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)).