我正在学习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)
我没有正确地做到这一点吗?
答案 0 :(得分:0)
我认为你正在接近错误的方式。如果您的最终目标是将某些内容写入浏览器,那么您根本不应该使用console.log。您在my_file.js
中需要的只是module.exports = 'Hello World';
这不是PHP,你可以在文件中写出来,然后包含该文件以将其包含在浏览器的输出中。
var http = require('http');
var content = require('./my_file.js');
http.createServer(function(req, res) {
res.end(content);
}).listen(port);
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();
});