【问题标题】:node.js how to access an already required objectnode.js 如何访问已经需要的对象
【发布时间】:2012-08-14 08:00:48
【问题描述】:

假设我已经运行了以下代码:

var toType = function(obj){
    return ({}).toString.call(obj).match(/\s([a-zA-Z]+)/)[1].toLowerCase();
};
var someModule = require("./path/to/name");
console.log(toType(require.cache["./path/to/name"]));
someModule();

在位置 ./path/to/name.js 我有以下代码:

module.exports = function (){
    console.log("Hell World!");
};

这两个 sn-ps 没有运行,所以我想我在这里遗漏了一些东西。输出如下:

node: no process found
undefined
Hell World!
[Finished in 0.1s]
  • require("./path/to/name"); 是如何映射到require.cache; 的?
  • 如何检索模块、删除它并检查它的类型?

将不胜感激带有代码的答案。

【问题讨论】:

    标签: node.js caching require


    【解决方案1】:

    对非系统导出运行以下工作,至少在节点 0.8.2 上:

    var http = require ('http');
    var util = require ('util');
    var b = require('./b');
    
    util.inspect(require.cache);
    
    var loaded = require.cache;
    

    注意require.cache是​​正确的; require.cache() 不是(它是一个属性;0.8.2 不会编译它。)为此我明白了:

    { '/home/user/node/a.js':
       { id: '.',
         exports: {},
         parent: null,
         filename: '/home/user/node/a.js',
         loaded: false,
         children: [ [Object] ],
         paths:
          [ '/home/user/node/node_modules',
            '/home/user/node_modules',
            '/home/node_modules',
            '/node_modules' ] },
      '/home/user/node/b.js':
       { id: '/home/user/node/b.js',
         exports: [Function],
         parent:
          { id: '.',
            exports: {},
            parent: null,
            filename: '/home/user/node/a.js',
            loaded: false,
            children: [Object],
            paths: [Object] },
         filename: '/home/user/node/b.js',
         loaded: true,
         children: [],
         paths:
          [ '/home/user/node/node_modules',
            '/home/user/node_modules',
            '/home/node_modules',
            '/node_modules' ] } }
    

    我不知道为什么像“http”这样的模块没有出现...

    【讨论】:

    • 感谢您的更正,我在文档中注意到它并更改了我的问题。很好的答案+1。我看到 require 被映射到文件系统中的绝对路径。这是正确的吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-04
    • 1970-01-01
    • 2015-07-16
    相关资源
    最近更新 更多