如何在 node.js 中要求一个文件并在请求方法中传递一个参数,而不是传递给模块?

Posted

技术标签:

【中文标题】如何在 node.js 中要求一个文件并在请求方法中传递一个参数,而不是传递给模块?【英文标题】:How to require a file in node.js and pass an argument in the request method, but not to the module? 【发布时间】:2012-02-08 16:31:05 【问题描述】:

我有一个必须加载的 module.js;为了工作需要objectX;

如何在node.js提供的require方法中将objectX传递给module.js?

谢谢

// my module.js
objectX.add('abc');
// error: objectX is undefined

我想要一种方法来做到这一点,而不必更改我所有的课程,因为这会花费很多时间......而且他们的方式对于客户端来说具有良好的性能。 (我将客户端文件与服务器文件混合在一起***)

【问题讨论】:

【参考方案1】:

您可以通过链接“init”方法(随意命名)来避免更改实际导出的对象。

模块TestModule.js:

var x = 0; // Some private module data

exports.init = function(nx) 
    x = nx; // Initialize the data
    return exports;
;

exports.sayHi = function() 
    console.log("HELLO THERE "+x);
;

然后像这样要求它:

var TM = require('./TestModule.js').init(20);
TM.sayHi();

【讨论】:

【参考方案2】:

您编写的模块可以导出单个函数。当您需要该模块时,请使用您的初始化参数调用该函数。该函数可以返回一个对象(哈希),您将其放入 require-ing 模块中的变量中。换句话说:

main.js

var initValue = 0;
var a = require('./arithmetic')(initValue);
// It has functions
console.log(a);
// Call them
console.log(a.addOne());
console.log(a.subtractOne());

算术.js:

module.exports = function(initValue) 
  return 
    addOne: function() 
      return initValue + 1;
    ,
    subtractOne: function() 
      return initValue - 1;
    ,
  

【讨论】:

好吧,我不想这么说,但 objectX 必须是全局的。在您的通话文件中,您可以设置global.objectX = "hi"【参考方案3】:

像导出一些 init 方法并在请求后立即将 objectX 作为参数传递的解决方法怎么样?

var module = require('moduleJS');
module.init(objectX)

【讨论】:

我有很多这样的类: t.add(...class...);但“t”是未定义的。我需要以某种方式将“t”放入模块中。我在问题中添加了一些信息

以上是关于如何在 node.js 中要求一个文件并在请求方法中传递一个参数,而不是传递给模块?的主要内容,如果未能解决你的问题,请参考以下文章

如何推断 node.js 分析结果?

如何使用 HTML 输入文件导入 excel 文件并在 Node.js 中读取文件内容(如何将完整路径发送到 Node.js)

Node.js:如何在提交时读取用户选择选项并在 textarea 中提供文件内容

如何使用 node.js 将 .pcm 文件转换为 wav 文件?

如何提取正文请求 node.js

如何在 node.js 中处理 POST 请求