我有一个基本的Node.js应用程序,我试图使用Express框架启动。我有一个views文件夹,其中有一个index.html文件。但是我在加载网页时收到以下错误:
Error: Cannot find module 'html'
下面是我的代码。
var express = require('express');
var app = express.createServer();
app.use(express.staticProvider(__dirname + '/public'));
app.get('/', function(req, res) {
res.render('index.html');
});
app.listen(8080, '127.0.0.1')
我错过了什么?
1)
最好的办法是设置静态文件夹。在你的主文件(app.js | server.js | ??):
app.use(express.static(path.join(__dirname, 'public')));
公共/ css / form . html
public / css / style . css
然后你从“public”文件夹中获得静态文件:
http://YOUR_DOMAIN/form.html
http://YOUR_DOMAIN/css/style.css
2)
您可以创建您的文件缓存。
使用方法fs.readFileSync
var cache = {};
cache["index.html"] = fs.readFileSync( __dirname + '/public/form.html');
app.get('/', function(req, res){
res.setHeader('Content-Type', 'text/html');
res.send( cache["index.html"] );
};);
1)
最好的办法是设置静态文件夹。在你的主文件(app.js | server.js | ??):
app.use(express.static(path.join(__dirname, 'public')));
公共/ css / form . html
public / css / style . css
然后你从“public”文件夹中获得静态文件:
http://YOUR_DOMAIN/form.html
http://YOUR_DOMAIN/css/style.css
2)
您可以创建您的文件缓存。
使用方法fs.readFileSync
var cache = {};
cache["index.html"] = fs.readFileSync( __dirname + '/public/form.html');
app.get('/', function(req, res){
res.setHeader('Content-Type', 'text/html');
res.send( cache["index.html"] );
};);
表达4.倍
res.sendFile(path [, options] [, fn])
发送.html文件,没有模板引擎…
//...
// Node modules
const path = require('path')
//...
// Set path to views directory
app.set('views', path.join(__dirname, 'views'))
/**
* App routes
*/
app.get('/', (req, res) => {
res.sendFile('index.html', { root: app.get('views') })
})
//...
.
├── node_modules
│
├── views
│ ├──index.html
└── app.js
如果你使用express framework到node.js
安装 npm EJS
然后添加配置文件
app.set('port', process.env.PORT || 3000);
app.set('views', __dirname + '/views');
app.set('view engine', 'ejs');
app.set('view engine', 'jade');
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(app.router)
;
从exports模块form.js中呈现页面
HTML文件在视图目录
扩展ejs文件名称为
form.html.ejs
然后创建form.js
res.render(“form.html.ejs”);
如果你使用express@~3.0.0修改下面的代码行:
app.use(express.staticProvider(__dirname + '/public'));
就像这样:
app.set("view options", {layout: false});
app.use(express.static(__dirname + '/public'));
我做了它的描述在express api页面,它的工作就像魅力。有了这样的设置,你就不需要编写额外的代码,所以它很容易用于你的微产品或测试。
完整代码如下所示:
var express = require('express');
var app = express.createServer();
app.set("view options", {layout: false});
app.use(express.static(__dirname + '/public'));
app.get('/', function(req, res) {
res.render('index.html');
});
app.listen(8080, '127.0.0.1')
这里是一个完整的文件演示的express服务器!
https://gist.github.com/xgqfrms-GitHub/7697d5975bdffe8d474ac19ef906e906
希望对你有所帮助!
// simple express server for HTML pages!
// ES6 style
const express = require('express');
const fs = require('fs');
const hostname = '127.0.0.1';
const port = 3000;
const app = express();
let cache = [];// Array is OK!
cache[0] = fs.readFileSync( __dirname + '/index.html');
cache[1] = fs.readFileSync( __dirname + '/views/testview.html');
app.get('/', (req, res) => {
res.setHeader('Content-Type', 'text/html');
res.send( cache[0] );
});
app.get('/test', (req, res) => {
res.setHeader('Content-Type', 'text/html');
res.send( cache[1] );
});
app.listen(port, () => {
console.log(`
Server is running at http://${hostname}:${port}/
Server hostname ${hostname} is listening on port ${port}!
`);
});