gpt4 book ai didi

javascript - 使用 Node.js 提供 Javascript 文件

转载 作者:太空宇宙 更新时间:2023-11-04 03:27:47 25 4
gpt4 key购买 nike

我正在尝试使用非常基本的node.js 服务器来提供一些静态文件。目的是提供一个带有引用 javascript 文件的脚本标签的 html 文件。在浏览器中打开应用程序时,html 呈现正常,问题出在 js 文件上。在浏览器中js文件中有html代码而不是js代码。

服务器代码:

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

var port = 3000;

var app = http.createServer(function(req, res){
var html = fs.createReadStream('./index.html')

html.pipe(res);
})

app.listen(port, function(){
console.log('Listening on port ' + port)
})

HTML 代码(index.html):

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Hello</title>
</head>
<body>
<h1>Hello</h1>
<script src="./some.js"></script>
</body>
</html>

JAVASCRIPT 代码(some.js):

console.log("Hello")

目录结构:

|-index.html
|-some.js
|-app.js(server)

最佳答案

我建议您按照以下方式为需要提供服务的文件创建一个目录

|-public
|-index.html
|-some.js
|-app.js(server)

然后您使用express.static 来为您创建的目录提供服务。

var express = require('express');
var app = express();
var path = require('path');
var port = 3000;

app.use(express.static(path.join(__dirname, 'public')));

app.listen(port, function(){
console.log('Listening on port ' + port)
})

然后你只需运行

node app.js

不使用 express ,您可以执行以下操作

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

http.createServer(function (request, response) {

var filePath = '.' + request.url;
if (filePath == './')
filePath = './index.html';

var extName = path.extname(filePath);
var contentType = 'text/html';
switch (extName) {
case '.js':
contentType = 'text/javascript';
break;
case '.css':
contentType = 'text/css';
break;
}

path.exists(filePath, function(exists) {

if (exists) {
fs.readFile(filePath, function(error, content) {
if (error) {
response.writeHead(500);
response.end();
}
else {
response.writeHead(200, { 'Content-Type': contentType });
response.end(content, 'utf-8');
}
});
}
else {
response.writeHead(404);
response.end();
}
});
});

关于javascript - 使用 Node.js 提供 Javascript 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42412006/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com