gpt4 book ai didi

javascript - Node 模块的映射路径,用于单元测试

转载 作者:数据小太阳 更新时间:2023-10-29 05:11:55 25 4
gpt4 key购买 nike

客户端我用 SystemJS stub 到模块的路径,就像这样

var systemJsConfig = {
baseURL: "./",
defaultJSExtensions: true,
map: {
'root-components': 'applicationRoot/rootComponents'
}
};

因此 require('root-components/foo'); 将映射到 applicationRoot/rootComponents/foo

问题是,如果我在 Mocha 中使用 require('root-components/foo'); 运行模块,Node 不知道该路径的含义。有没有一种明智的方法可以在 Node 中完成此路径映射?

Proxyquire 有这个能力吗?我通读了他们的文档,但没有发现任何迹象。

这仅用于单元测试,因此我对使用任何类型的派对实用程序的任何解决方案都很满意。

最佳答案

如果您的唯一要求非常简单,您可以创建一个实用函数来覆盖 require

新的 require 将映射应用于路径参数,在新路径中查找模块,您可以选择回退映射路径中不存在的模块。代码应该是这样的

const oldRequire = require;
require = (path) => {
try {
const mapped = oldRequire(path.replace('root-components/foo', 'applicationRoot/rootComponents/foo'));
if (!mapped) {
throw new Error('module not found in mapped directory');
}
console.log('module resolved with mapping', path);
return mapped;
} catch (e) {
console.log('using old require without mapped path', path);
return oldRequire(path);
}
};

关于javascript - Node 模块的映射路径,用于单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37595864/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com