ahe*_*ick 272 html javascript mongodb node.js express
我有一个基本的node.js应用程序,我试图使用Express框架开始.我有一个views文件夹,我有一个index.html文件.但是在加载Web浏览器时收到以下错误.
错误:找不到模块'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')
Run Code Online (Sandbox Code Playgroud)
我在这里错过了什么?
And*_*yer 291
你可以让jade包含一个纯HTML页面:
在views/index.jade中
include plain.html
Run Code Online (Sandbox Code Playgroud)
在views/plain.html中
<!DOCTYPE html>
...
Run Code Online (Sandbox Code Playgroud)
和app.js仍然可以只渲染玉:
res.render(index)
Run Code Online (Sandbox Code Playgroud)
Dre*_*kes 222
其中许多答案都已过时.
使用express 3.0.0和3.1.0,以下工作:
app.set('views', __dirname + '/views');
app.engine('html', require('ejs').renderFile);
Run Code Online (Sandbox Code Playgroud)
有关Express 3.4+的替代语法和注意事项,请参阅以下注释:
app.set('view engine', 'ejs');
Run Code Online (Sandbox Code Playgroud)
然后你可以这样做:
app.get('/about', function (req, res)
{
res.render('about.html');
});
Run Code Online (Sandbox Code Playgroud)
这假设您在views子文件夹中拥有视图,并且已安装ejs节点模块.如果没有,请在节点控制台上运行以下命令:
npm install ejs --save
Run Code Online (Sandbox Code Playgroud)
Ivo*_*zel 71
从Express.js指南:查看渲染
查看文件名采用表单
Express.ENGINE,其中ENGINE是所需模块的名称.例如,视图layout.ejs会告诉视图系统require('ejs'),模块被装载必须导出方法exports.render(str, options)符合快递,但是app.register()可以用来映射引擎文件扩展名,从而例如foo.html可以通过玉石来呈现.
所以你要么创建自己的简单渲染器,要么只使用jade:
app.register('.html', require('jade'));
Run Code Online (Sandbox Code Playgroud)
更多关于app.register.
请注意,在Express 3中,此方法已重命名
app.engine
kee*_*n3d 45
您还可以阅读HTML文件并发送它:
app.get('/', (req, res) => {
fs.readFile(__dirname + '/public/index.html', 'utf8', (err, text) => {
res.send(text);
});
});
Run Code Online (Sandbox Code Playgroud)
小智 45
试试这个.这个对我有用.
app.configure(function(){
.....
// disable layout
app.set("view options", {layout: false});
// make a custom html template
app.register('.html', {
compile: function(str, options){
return function(locals){
return str;
};
}
});
});
....
app.get('/', function(req, res){
res.render("index.html");
});
Run Code Online (Sandbox Code Playgroud)
小智 20
app.get('/', function (req, res) {
res.sendfile(__dirname + '/public/index.html');
});
Run Code Online (Sandbox Code Playgroud)
小智 19
如果您使用express@~3.0.0,请更改以下示例中的行:
app.use(express.staticProvider(__dirname + '/public'));
Run Code Online (Sandbox Code Playgroud)
这样的事情:
app.set("view options", {layout: false});
app.use(express.static(__dirname + '/public'));
Run Code Online (Sandbox Code Playgroud)
我按照快速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')
Run Code Online (Sandbox Code Playgroud)
Jak*_*Jak 14
我也面临着同样的问题express 3.X和node 0.6.16.上述解决方案不适用于最新版本express 3.x.他们删除了app.register方法并添加了app.engine方法.如果您尝试了上述解决方案,则可能会出现以下错误.
node.js:201
throw e; // process.nextTick error, or 'error' event on first tick
^
TypeError: Object function app(req, res){ app.handle(req, res); } has no method 'register'
at Function.<anonymous> (/home/user1/ArunKumar/firstExpress/app.js:37:5)
at Function.configure (/home/user1/ArunKumar/firstExpress/node_modules/express/lib/application.js:399:61)
at Object.<anonymous> (/home/user1/ArunKumar/firstExpress/app.js:22:5)
at Module._compile (module.js:441:26)
at Object..js (module.js:459:10)
at Module.load (module.js:348:31)
at Function._load (module.js:308:12)
at Array.0 (module.js:479:10)
at EventEmitter._tickCallback (node.js:192:40)
Run Code Online (Sandbox Code Playgroud)
摆脱错误信息.将以下行添加到您的app.configure function
app.engine('html', require('ejs').renderFile);
Run Code Online (Sandbox Code Playgroud)
注意:您必须安装ejs模板引擎
npm install -g ejs
Run Code Online (Sandbox Code Playgroud)
例:
app.configure(function(){
.....
// disable layout
app.set("view options", {layout: false});
app.engine('html', require('ejs').renderFile);
....
app.get('/', function(req, res){
res.render("index.html");
});
Run Code Online (Sandbox Code Playgroud)
注意:最简单的解决方案是使用ejs模板作为视图引擎.在那里,您可以在*.ejs视图文件中编写原始HTML.
文件夹结构:
.
??? index.html
??? node_modules
? ???{...}
??? server.js
Run Code Online (Sandbox Code Playgroud)
server.js
var express = require('express');
var app = express();
app.use(express.static('./'));
app.get('/', function(req, res) {
res.render('index.html');
});
app.listen(8882, '127.0.0.1')
Run Code Online (Sandbox Code Playgroud)
的index.html
<!DOCTYPE html>
<html>
<body>
<div> hello world </div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
输出:
你好,世界
小智 7
如果您不必使用views目录,只需将html文件移动到下面的公共目录即可.
然后,将此行添加到app.configure而不是'/ views'.
server.use(express.static(__dirname + '/public'));
对于我的项目,我创建了这个结构:
index.js
css/
reset.css
html/
index.html
Run Code Online (Sandbox Code Playgroud)
此代码为/请求提供 index.html,为请求提供reset.css /css/reset.css。足够简单,最好的部分是它会自动添加缓存标头。
var express = require('express'),
server = express();
server.configure(function () {
server.use('/css', express.static(__dirname + '/css'));
server.use(express.static(__dirname + '/html'));
});
server.listen(1337);
Run Code Online (Sandbox Code Playgroud)
要在节点中呈现Html页面,请尝试以下操作:
app.set('views', __dirname + '/views');
app.engine('html', require('ejs').renderFile);
Run Code Online (Sandbox Code Playgroud)
您需要通过以下方式安装ejs模块npm:
npm install ejs --save
Run Code Online (Sandbox Code Playgroud)小智 5
如果你想渲染 HTML 文件,你可以使用sendFile()method 而不使用任何模板引擎
const express = require("express")
const path = require("path")
const app = express()
app.get("/",(req,res)=>{
res.sendFile(**path.join(__dirname, 'htmlfiles\\index.html')**)
})
app.listen(8000,()=>{
console.log("server is running at Port 8000");
})
Run Code Online (Sandbox Code Playgroud)
我在htmlfile 中有一个 HTML 文件,所以我使用路径模块来呈现 index.html 路径是节点中的默认模块。如果您的文件存在于刚刚使用的根文件夹中
res.sendFile(path.join(__dirname, 'htmlfiles\\index.html'))
Run Code Online (Sandbox Code Playgroud)
在里面app.get()它会工作
| 归档时间: |
|
| 查看次数: |
393828 次 |
| 最近记录: |