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

问题描述 投票:0回答:1

在我的一个NodeJS模块中,我需要访问一个文件,该文件是自己文件夹中的模块的一部分(用于单元测试)。它在调用文件中尝试使用__dirname,并指向该资源文件的相对路径。这在从vscode内部运行时起作用,但在终端中执行npm test时不起作用。在这种情况下,构建的路径是一个级别。怎么可能?

我必须补充一点,我正在使用打字稿进行编码,使用Mocha进行单元测试。

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

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

对于我的测试。知道如何克服这一点并确保使用正确的路径(除了测试__filename是否与.ts结束)?

node.js visual-studio-code vscode-extensions
1个回答
0
投票

事实证明,这很简单。不使用ts代码运行mocha,而是使用转换后的代码。在测试之前只需要进行转换运行:

  "scripts": {
    "prepublish": "tsc",
    "install": "tsc",
    "test": "tsc && mocha out/test"
  },
© www.soinside.com 2019 - 2024. All rights reserved.