2

次のコードを実行したとしましょう。

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!");
};

これらの 2 つのスニペットは実行されないため、ここに何かが欠けていると考えました。出力は次のとおりです。

node: no process found
undefined
Hell World!
[Finished in 0.1s]
  • はどのようrequire("./path/to/name");に にマップされrequire.cache;ますか?
  • モジュールを取得して削除し、タイプを確認するにはどうすればよいですか?

コードでの回答をいただければ幸いです。

4

1 に答える 1

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」のようなモジュールが表示されない理由がわかりません...

于 2012-08-17T21:51:47.433 に答える