vscode保留dynamic需要的node.js模块的智能感知

为了防止需要具有requirefunction的node.js模块的长相对path,在我们的组织中,我们使用一个resolver模块,根据给定的参数和文件夹位置来parsing到其他模块的path。 例如,而不是:

 const User = require('../../../common/models/user.js'); 

我们做类似的事情:

 const resolver = require('../../../resolver.js'); const User = resolver.require('user', 'common/models'); 

这对于某些方面来说是好的,但是这样需要模块使得视觉工作室代码失去所需模块的跟踪,不能提供智能感知:没有build议,没有自动完成,没有types提示等等。

请注意,这个resolver.require函数产生pathdinamically。 VScode足够聪明,可以在c.js文件中为模块a.js提供智能感知:

 const b = require('...path-to-b'); const a = b.requireA(); //const a has intellisense 

给一个b.js模块:

 exports.requireA = function(){return require(path_to_a.js)} 

但是,如果这样的resolver.require函数从参数variables生成path,则会丢失对require模块的跟踪。

经过一些研究,我还没有find任何可以解决问题的方法…… 也许有一种方法可以告诉intellisense引擎如何将我们的resolver.require调用与.js文件配对?