Nodejs执行节点文件并获取其输出

时间:2014-10-31 19:34:28

标签: javascript node.js

我正在学习Node.js并创建一个Web服务器,我想做的是require()一个执行nodejs代码并将该文件输出捕获到变量中的文件。那可能吗?

我有以下内容:

Main.js

// Webserver code above
require('my_file.js');
// Webserver code below

my_file.js

console.log("Hello World");

我希望 Main.js 的输出在网络浏览器中显示Hello World,当我转到网址时,它会在控制台中显示,但实际显示的是什么页面为console.log("Hello World");

有什么方法可以让浏览器只显示Hello World而不显示实际代码?

修改

当我这样做时:

http.createServer(function (request, response){
    // Stripped Code
    var child = require('child_process').fork(full_path, [], []);
    child.stdout.on('data', function(data){
        response.write(data);
    });
    // Stripped Code
}).listen(port, '162.243.218.214');

我收到以下错误:

child.stdout.on('data', function(data){
             ^
TypeError: Cannot call method 'on' of null
    at /home/rnaddy/example.js:25:38
    at fs.js:268:14
    at Object.oncomplete (fs.js:107:15)

我没有正确地做到这一点吗?

2 个答案:

答案 0 :(得分:0)

我认为你正在接近错误的方式。如果您的最终目标是将某些内容写入浏览器,那么您根本不应该使用console.log。您在my_file.js中需要的只是module.exports = 'Hello World';

这不是PHP,你可以在文件中写出来,然后包含该文件以将其包含在浏览器的输出中。

main.js

var http = require('http');
var content = require('./my_file.js');

http.createServer(function(req, res) {
  res.end(content);
}).listen(port);

my_file.js

var content = '';
// build content here
module.exports = content;

答案 1 :(得分:0)

我们走吧!我懂了!

var child = require('child_process').fork(full_path, [], {silent: true});
child.stdout.on('data', function(data){
    response.write(data);
});
child.stdout.on('end', function(){
    response.end();
});