【发布时间】:2015-08-25 11:17:49
【问题描述】:
我正在测试一些 nodejs 代码,这就是我的目录的样子:
-> source //NODE PATH=./source ...
-> plugs
-myPlug.js
-test.js
在test.js 我尝试像这样要求myPlug.js:
function(){
var myRequiredPlug = require('./myPlug.js') //this works
}
由于NODE PATH是source,我也试过了:
function(){
var myRequiredPlug = require('./../plugs/myPlug') //also works
}
但是我每次都需要为我的应用使用不同的插件,所以我非常希望以这种方式创建路径:
function(nameOfPlug){ // nameOfPlug := myPlug
var myPath = './../plugs/' + nameOfPlug;
console.log(myPath === './../plugs/myPlug') // true, so same string
var myRequiredPlug = require(myPath);
}
当我按照他的方式尝试时,我得到了错误:Error: Cannot find module './../plugs/myPlug'
我已经尝试过path.normalize,甚至用path.join 加入路径,但得到相同的结果。有什么想法吗?
更新:答案
这个答案可以用RequireJS解决,Dynamic require in RequireJS, getting "Module name has not been loaded yet for context" error?
【问题讨论】:
-
你的意思是
console.log(myPath === './../plugs/nameOfPlug')(字符串两边有引号)? -
jfriend00,是的,我和
'...'一起吃,谢谢。 nameOfPlugs 只是参数的名称。测试时,我将 myPlug 作为 nameOfPlugs 传递。 -
尝试 require('../plugs/myPlug') 代替 require('./../plugs/myPlug')
-
@victork,它不起作用,正如我在问题中已经说过的那样。 (
'../plugs/myPlug'是path.normalize('./../plugs/myPlug')的返回值)
标签: javascript node.js path require