gpt4 book ai didi

javascript - Node.js 加载空的 css 文件

转载 作者:行者123 更新时间:2023-11-28 16:15:21 24 4
gpt4 key购买 nike

对 node.js 很陌生,我想知道是否有什么可以帮助我解决这个小的 css 和图像错误。我只发布了我的 html 和 .js 的主要部分,只是为了保持干净。无论如何,我的 CSS 和图像都没有加载。我几乎尝试了一切,但无法理解。我的表单、服务器、除了 css 和图像之外的所有东西都可以正常工作。任何帮助都会很棒!

文件结构

webDemo
node_modules
public
css
indexCss.css
images
powerbyfhirlogo.JPG
index.html
package.json
server.js

我的 Node 文件的主要部分。

var http = require('http');
var fs = require('fs');
var path = require('path');
var formidable = require("formidable");
var XMLHttpRequest = require("xmlhttprequest").XMLHttpRequest;
var xhr = new XMLHttpRequest();
var request = require("request");
var express = require('express');
var app = express();
var server = http.createServer(function (req, res) {

if (req.method.toLowerCase() == 'get') {
app.use(express.static(path.join(__dirname, '/public')));
displayForm(res);
}
else if (req.method.toLowerCase() == 'post') {

processFormFieldsIndividual(req, res);
}
});

function displayForm(res) {


fs.readFile('index.html', function (err, data) {
res.writeHead(200, {
'Content-Type': 'text/html',
'Content-Length': data.length
});

res.write(data);
res.end();
});
}

server.listen(63342);
console.log("server listening on 63342");

我的 html 文件的开头。

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>MI FHIR Demo Form</title>
<link rel="stylesheet" type="text/css" href="public/css/indexCss.css" />

</head>
<body>
<div class=container1>
<img src= "public/images/powerbyfhirlogo.JPG" class="img-rounded" alt="Cinque Terre">
<h1>MI FHIR Demo Form</h1>
</div>
<hr/>

<div class=container2>
<form role="form" action="" method="post" enctype="multipart/form-data">

编辑解决方案

var express = require('express');
var path = require('path');
var server = express();

var port = process.env.port || 63342;

// Setup Views & View Engine
server.set('views', path.join(__dirname, 'views'));
server.engine('html', require('ejs').renderFile);
server.set('view engine', 'html');


// Define ./public as static
server.use(express.static(path.join(__dirname, 'public')));

//All POST's use processFormFieldsIndividual
server.post('*', processFormFieldsIndividual);

server.listen(port, function() {
console.log('listening on port ' + port);
});

新的文件结构

webDemo
node_modules
public
css
indexCss.css
images
powerbyfhirlogo.JPG
index.html
package.json
server.js

最佳答案

您在服务器文件中使用了两个不同的服务器,appserver。那确实是您出错的地方。您不能混合和匹配两个不同的服务器并期望一个为另一个工作,反之亦然。

如果您要使用 express,则不需要 http.createServer(),因为 express 是一个 Node Core http 服务器。

此外,您不希望为每个 GET 请求都重新声明您的静态文件,这是没有必要的。

基本上这就是你需要的

var express = require('express');
var path = require('path');
var server = express();

var port = process.env.port || 63342;

// Setup Views & View Engine
server.set('views', path.join(__dirname, 'views'));
server.engine('html', require('ejs').renderFile);
server.set('view engine', 'html');


// Define ./public as static
server.use(express.static(path.join(__dirname, 'public')));

//All GET's render index.html
server.get('*', function(req, res) {
return res.render('index');
});

//All POST's use processFormFieldsIndividual
server.post('*', processFormFieldsIndividual);

server.listen(port, function() {
console.log('listening on port ' + port);
});

编辑

为了取消不必要的 res.sendFile(),我结合了使用 ejsview engine .为了使用它,您需要通过 npm 安装 ejs 作为依赖项。

npm i --save ejs

此外,您需要将 index.html 放在元素文件夹中名为 views 的新目录中。这使您可以利用 res.render,从而避免使用 res.sendFile()。您的新目录结构将如下所示。

webDemo
node_modules
public
css
indexCss.css
images
powerbyfhirlogo.JPG
views
index.html
package.json
server.js

关于javascript - Node.js 加载空的 css 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37623812/

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