如何从 nodejs 模块中的相对路径加载资源?

How to load resource from a relative path in a nodejs module?

在我的一个 NodeJS 模块中,我需要在自己的文件夹中访问属于模块一部分的文件(用于单元测试)。它尝试 __dirname 在调用文件中使用该资源文件的相对路径。这在从 vscode 中 运行ning 时有效,但在终端中执行 npm test 时无效。在那种情况下,构建的路径是一个层次。怎么可能?

我必须补充一点,我使用 typescript 进行编码,使用 Mocha 进行单元测试。

简单地记录 __filename 在这里有点帮助。它表明在 vscode 下执行文件是转译后的 JS 文件,而在 Mocha 下是 typescript 源文件。我运行:

mocha --compilers ts:ts-node/register,tsx:ts-node/register

用于我的测试。知道如何克服这个问题并确保使用正确的路径(除了测试 __filename 是否以 .ts 结尾)吗?

好的,事实证明很简单。不要使用 ts 代码 运行ning mocha,而是让它使用转译后的代码。测试前只需要转译 运行:

  "scripts": {
    "prepublish": "tsc",
    "install": "tsc",
    "test": "tsc && mocha out/test"
  },