【发布时间】:2015-03-31 19:23:56
【问题描述】:
给定
3 个 Node.js 项目 Main - Framework - Repositories
Main 通过 npm link 连接了另外两个项目。
在测试中,我将 require 包装在一个方法中。我在解决链接项目时遇到了一些问题(详情见下文)
简化后的代码如下所示:
module.export.resolve = function(file){
[...]//Some more logik to handle relative pathes
return require(file)
}
这在大多数情况下都可以正常工作。我还想办法处理亲属路径(查找调用者并根据此路径应用路径)
现在这是在链接(npm 链接)到 Project Main 的 Project Framework 中。 Project main 还链接了Project Repositories。
现在在 Project Main 我有:
require('ProjectRepositories/foo') // Works as expected
myRequire.resolve('ProjectRepositories/foo') // Returns MODULE_NOT_FOUND "Cannot find module 'ProjectRepositories/foo'
我认为问题在于 Repositories Project 未链接到 Framework Project。但是除了链接它们还有其他方法吗?
我希望减少依赖。有什么提示吗?
【问题讨论】:
-
我不太清楚你的结构是什么样的。你能澄清一下吗?同时,你知道你可以拥有一个
NODE_PATHenv var吗? -
你说“按预期工作”,但你没有说它返回什么。所以,它可能会返回相同的结果。从您发布的内容来看,它的作用完全相同,只是您编写了额外的逻辑,这实际上可能会弄乱需要导入的内容。如果您创建一个直接返回
require(file)的resolve2 函数,它应该与您直接调用require('ProjectRepos/foo')一样好。然后你可能会得出结论,我想你的自定义逻辑实际上是错误所在。
标签: javascript node.js npm commonjs