我正在寻找一种解决方案,以便在用AMD编译的TypeScript类中使用__dirname(或等效物),__dirname那里不存在。而且因为它是打字稿,所以我不能(或者我不知道如何)导入包含uri
module
,允许我获取 uri。
我曾经找到过解决方案,但我不记得如何,到目前为止我再也找不到了。
我看了一下这个,但它是纯 javascript 并且我使用打字稿,我尝试导入模块,但我收到 TS 错误。
https://stackoverflow.com/questions/9027429/how-to-use-nodejs-global-module-objects-in-requirejs-modules
一种解决方案是:
在 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))
.