我正在编写一个节点模块(isSameAs),它为已经安装在我的项目中的模块(类验证器)添加了一些功能。
当我把它放在我的项目中时,它就起作用了,但当我将它解压缩到一个单独的模块后,它就停止工作了。这个模块依赖于一个class-validator模块,所以我将它安装在一个模块目录中。
我假设,由于我试图修改的模块的两个实例(project/node_modules/class-validator和project/node_modules/my_module/class-validator),它覆盖了模块目录中的class-validator,这是错误的。
我的模块代码
index.js
import { registerDecorator } from "class-validator";
export function IsSameAs() {
console.log('value is the same');
}package.json
"dependencies": {
"class-validator": "^0.11.0"
}使用我的模块和class-validator的项目
validation.js
import { IsSameAs } from 'class-validator-same-as';package.json
"class-validator": "^0.11.0",
"class-validator-same-as": "file:../class-validator-isSameAs",所以很明显,在我的模块中有一个类验证器的第二个实例,是否有一种方法不是在我的模块中安装class-validator,而是使用全局的?
发布于 2020-03-04 11:19:45
我可以想到两种选择:
class-validator模块再导出class-validator-same-as模块/函数。在您的主项目中,您将只导入您的class-validator-same-as模块。class-validator模块/函数注入到class-validator-same-as模块中。您只将class-validator导入到您的主项目中,并向您的class-validator-same-as模块提供对class-validator的引用。发布于 2020-03-04 11:37:51
您可以使用对等依赖,通过这种方式可以显式地告诉您的包需要安装其他包。在安装软件包时,用户甚至会收到一条整洁的消息,而不需要这样做。
您的模块的package.json将类似于
"peerDependencies": {
"class-validator": "^0.11.0"
}您可以在对等依赖的这里上阅读更多内容。
https://stackoverflow.com/questions/60524596
复制相似问题