【问题标题】:Node.js require path stored in a variableNode.js 需要存储在变量中的路径
【发布时间】: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 PATHsource,我也试过了:

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


【解决方案1】:

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

错误:

const path = './some/path.file';
const data = require(`${path}`);

对:

const path = 'file';
const data = require(`./some/${path}.file`);

【讨论】:

    【解决方案2】:
    function(nameOfPlug){  // nameOfPlug := myPlug
         var myPath = './../plugs/' + nameOfPlug;
         console.log(myPath === './../plugs/myPlug') // true, so same string
         var myRequiredPlug = require('' + myPath);  
    }
    

    【讨论】:

      猜你喜欢
      • 2016-07-25
      • 1970-01-01
      • 2012-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-15
      • 1970-01-01
      • 2018-11-03
      相关资源
      最近更新 更多