Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/426.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用nodeJS将脚本文件链接到html文件_Javascript_Html_Node.js - Fatal编程技术网

Javascript 如何使用nodeJS将脚本文件链接到html文件

Javascript 如何使用nodeJS将脚本文件链接到html文件,javascript,html,node.js,Javascript,Html,Node.js,我正在使用nodeJS提供一些html,但我希望能够调用javascript文件中的函数,我正在尝试链接这些函数。但是,我收到的错误消息是资源被解释为脚本,但使用MIME类型text/html传输:http://localhost:8888/index.js“。我不确定哪些链接不正确,需要一种方法来链接我的文件index.js。我试图将文件加载到头部,如下所示: http = require('http'), http.createServer(function(req, res) { va

我正在使用nodeJS提供一些html,但我希望能够调用javascript文件中的函数,我正在尝试链接这些函数。但是,我收到的错误消息是
资源被解释为脚本,但使用MIME类型text/html传输:http://localhost:8888/index.js“
。我不确定哪些链接不正确,需要一种方法来链接我的文件
index.js
。我试图将文件加载到头部,如下所示:

http = require('http'),

http.createServer(function(req, res) {

var body = '<html>'+
    '<head>'+
    '<script src="index.js"></script>'+
    '<meta http-equiv="Content-Type" content="text/html; '+
    'charset=UTF-8" />'+
    '</head>'+
    '<body>'+
    '</body>'+
    '</html>';
response.writeHead(200,{"Content-Type":"text/html"});
response.write(body);
response.end();
}

}).listen(8888);
http=require('http'),
http.createServer(函数(req,res){
变量体=“”+
''+
''+
''+
''+
''+
''+
'';
writeHead(200,{“内容类型”:“text/html”});
答复.书面答复(正文);
response.end();
}
}).听(8888);

如何加载这个javascript文件
index.js
,以便
index.js
中包含的所有函数都可以在客户端使用

index.js
的请求得到与
/
相同的响应

仅处理这一种情况的简单解决方案是:

var http = require('http');
var fs = require('fs');

http.createServer(function(req, res) {
  // Send index.js
  if(req.url == '/index.js') {
    var file = __dirname + '/index.js';
    var stat = fs.statSync(file);
    res.writeHead(200, {
      'Content-Type': 'text/javascript',
      'Content-Length': stat.size
    }); 
    var readStream = fs.createReadStream(file);
    readStream.pipe(res);
  // Send default page
  } else {
    var body = '<html>'+
        '<head>'+
        '<script src="index.js"></script>'+
        '<meta http-equiv="Content-Type" content="text/html; '+
        'charset=UTF-8" />'+
        '</head>'+
        '<body>'+
        '</body>'+
        '</html>';
    res.writeHead(200,{"Content-Type":"text/html"});
    res.write(body);
    res.end();
  }
}).listen(8888);
var http=require('http');
var fs=需要('fs');
http.createServer(函数(req,res){
//发送index.js
如果(req.url='/index.js'){
var file=_dirname+'/index.js';
var stat=fs.statSync(文件);
文书标题(200{
“内容类型”:“文本/javascript”,
“内容长度”:stat.size
}); 
var readStream=fs.createReadStream(文件);
readStream.pipe(res);
//发送默认页面
}否则{
变量体=“”+
''+
''+
''+
''+
''+
''+
'';
res.writeHead(200,{“内容类型”:“text/html”});
res.write(正文);
res.end();
}
}).听(8888);

创建一个新的
index.html
页面,而不是对其进行硬编码-在其中包含脚本文件并提供
index.html

        var http = require('http');
        var fs = require('fs');

    http.createServer(function(req, res) {        
      if(req.url == '/index.html') {
        var file = __dirname + '/index.html';  //this index.html contains script tag
        var stat = fs.statSync(file);
        res.writeHead(200, {
          'Content-Type': 'text/javascript',
          'Content-Length': stat.size
        }); 
        var readStream = fs.createReadStream(file);
        readStream.pipe(res);
      // Send default page
      }
    }).listen(8888);

无论您的服务器收到什么请求,您都需要检测所请求的文件是index.js,并为该请求提供不同的内容谢谢您的思考。然而,这并不完全符合我的目标。我试图做的只是将html页面转换为javascript文件,保持现有html的位置。这要么提供一个html文件,要么提供一个包含index.js的空白页面linked@maudulus我不明白你的意思。if语句的第一部分不发送
正文中的html,尽管它确实发送
index.js
中的函数;if语句的第二部分向上发送
body
,但不向上发送
index.js
,这是因为在
else
部分,它提供html。html中的脚本标记请求外部脚本
index.js
。当服务器收到对
index.js
的请求时,它将提供您的
index.js
文件(来自
if
部分)。因此,您将收到两个请求。您是说要在html中的
标记之间写入
index.js
的每一行吗?脚本标记不起作用-我收到一条错误消息
资源被解释为脚本,但使用MIME类型text/html传输:http://localhost:8888/index.js“