Node.js 需要将路径存储在变量中

reg*_*ngi 9 javascript path require node.js

我正在测试一些 nodejs 代码,这就是我的目录的样子:

-> source  //NODE PATH=./source ...
-> plugs
   -myPlug.js
   -test.js
Run Code Online (Sandbox Code Playgroud)

test.js我尝试这样要求myPlug.js

function(){
     var myRequiredPlug = require('./myPlug.js') //this works
}
Run Code Online (Sandbox Code Playgroud)

由于NODE PATHsource,我也尝试过:

function(){
     var myRequiredPlug = require('./../plugs/myPlug') //also works
}
Run Code Online (Sandbox Code Playgroud)

但是我每次都必须为我的应用程序需要一个不同的插件,所以我非常想以这种方式创建路径:

 function(nameOfPlug){  // nameOfPlug := myPlug
     var myPath = './../plugs/' + nameOfPlug;
     console.log(myPath === './../plugs/myPlug') // true, so same string
     var myRequiredPlug = require(myPath);  
}
Run Code Online (Sandbox Code Playgroud)

当我按照他的方式尝试时,出现错误: Error: Cannot find module './../plugs/myPlug'

我已经尝试过path.normalize,甚至用 加入路径path.join,但得到相同的结果。有任何想法吗?

更新:答案

这个答案可以使用RequireJS解决,在 RequireJS 中使用Dynamic require,得到“Module name has not been loaded yet for context”错误?

kol*_*dav 2

我使用复合线,但不完全。

错误的:

const path = './some/path.file';
const data = require(`${path}`);
Run Code Online (Sandbox Code Playgroud)

正确的:

const path = 'file';
const data = require(`./some/${path}.file`);
Run Code Online (Sandbox Code Playgroud)