简单的require.extensions示例不起作用

时间:2012-12-06 20:48:30

标签: javascript node.js

module.extensions似乎没有正常工作,http://nodejs.org/api/globals.html#globals_require_extensions上给出的示例不返回任何内容。

我使用的是node@0.8.12 | linux | IA32

node js file(run.js):

#!/usr/bin/env node
fs = require('fs');

    require.extensions['.jse'] = function(module, filename) {
      var content = fs.readFileSync(filename, 'utf8');
      module.exports = content;
    };

require('./0.jse')

// 
console.log(require('./0.jse'))

jse文件(0.jse):

#! /usr/bin/env node
console.log('IT WORKS!')

$ ls -al * .jse * .js

-rwxr-xr-x 1 alvaro alvaro  46 dic  6 17:26 0.jse
-rwxr-xr-x 1 alvaro alvaro 314 dic  6 17:32 run.js

file --mime * .js * .jse

run.js: text/plain; charset=us-ascii
0.jse:  text/plain; charset=us-ascii

$ node run.js

输出:

#! /usr/bin/env node
console.log('IT WORKS!')

而不是:

IT WORKS!

怎么了?

2 个答案:

答案 0 :(得分:4)

使用module._compile(contents,filename)结束编译。

所以,节点js文件(run.js):

#!/usr/bin/env node
fs = require('fs');

    require.extensions['.jse'] = function(module, filename) {
      var content = fs.readFileSync(filename, 'utf8');
      return module._compile(content, filename);
    };

require('./0.jse')

答案 1 :(得分:0)

您没有返回module,请参阅下文

require.extensions['.jse'] = function(module, filename) {
   var content = fs.readFileSync(filename, 'utf8');
   module.exports = content;
   return module; // Return module
};