无法从命令行在节点上安装把手
Cannot install handlebars on Node from command line
我一直在尝试让手把使用node。我的书指示我安装这样的车把:npm install --save express3-handlebar
。这引发了一个错误
npm WARN deprecated express3-handlebars @0.5.2: THIS PACKAGE HAS BEEN RENAMED TO: express-handlebars
所以我尝试了npm install --save express-handlebar
。
当我尝试启动服务器node meadowlark.js
时,命令提示符显示Express started on....
但当我将localhost放入浏览器时,我收到了以下消息:
Error: No default engine was specified and no extension was provided.
at new View (C:'Users'myUserName'Desktop'project'meadowlark'site'node_modules'express'lib'view.js:48:42)
at EventEmitter.app.render (C:'Users'myUserName'Desktop'project'meadowlark'site'node_modules'express'lib'application.js:509:12)
at ServerResponse.res.render (C:'Users'myUserName'Desktop'project'meadowlark'site'node_modules'express'lib'response.js:904:7)
at require.create.defaultLayout (C:'Users'myUserName'Desktop'project'meadowlark'site'meadowlark.js:20:6)
at Layer.handle_error (C:'Users'myUserName'Desktop'project'meadowlark'site'node_modules'express'lib'router'layer.js:58:5)
at trim_prefix (C:'Users'myUserName'Desktop'project'meadowlark'site'node_modules'express'lib'router'index.js:269:13)
at C:'Users'myUserName'Desktop'project'meadowlark'site'node_modules'express'lib'router'index.js:238:9
at Function.proto.process_params (C:'Users'myUserName'Desktop'project'meadowlark'site'node_modules'express'lib'router'index.js:313:12)
at C:'Users'myUserName'Desktop'project'meadowlark'site'node_modules'express'lib'router'index.js:229:12
at Function.match_layer (C:'Users'myUserName'Desktop'project'meadowlark'site'node_modules'express'lib'router'index.js:296:3)
然后我注意到在我的索引文件中我仍然有
var app = express();
// set up handlebars view engine
var handlebars = require('express3-handlebars')
.create({ defaultLayout:'main' });
app.engine('handlebars', handlebars.engine);
app.set('view engine', 'handlebars');
所以我把它改为从第三行中删除3
。仍然是一连串的错误。我做错了什么才收到这个错误?当我安装车把时,我是否不在正确的目录中?我已经从我的应用根目录和其中包含我的index.js
的文件中尝试过了
var express = require('express');
var app = express();
app.set('port', process.env.PORT || 3000);
app.get('/', function(req, res) {
res.render('home');
});
app.get('/about', function(req, res) {
res.render('about');
});
// 404 catch-all handler (middleware)
app.use(function(req, res, next){
res.status(404);
res.render('404');
});
// 500 error handler (middleware)
app.use(function(err, req, res, next){
console.error(err.stack);
res.status(500);
res.render('500');
});
app.listen(app.get('port'), function() {
console.log('Express started on http://localhost:' +
app.get('port') + '; press Ctrl-C to terminate.');
});
var app = express();
// set up handlebars view engine
var handlebars = require('express3-handlebars')
.create({ defaultLayout:'main' });
app.engine('handlebars', handlebars.engine);
app.set('view engine', 'handlebars');
我正在使用的示例来自Node&Express(伊桑·布朗)。
我在代码中看到的主要问题是,您正在创建两个app
:实例
var app = express(); // I see this line twice in your code
这意味着你在应用程序的错误实例上配置了把手,因此"No default engine was specified"
。
如果你删除了第二个实例化,你应该是黄金。以下是我将如何重写该代码的示例:
var express = require('express');
var app = express();
var handlebars = require('express-handlebars')
.create({ defaultLayout:'main' });
app.engine('handlebars', handlebars.engine);
app.set('view engine', 'handlebars');
app.set('port', 3000);
app.get('/', function(req, res) {
res.render('home');
});
app.get('/about', function(req, res) {
res.render('about');
});
// 404 catch-all handler (middleware)
app.use(function(req, res, next){
res.status(404);
res.render('404');
});
// 500 error handler (middleware)
app.use(function(err, req, res, next){
console.error(err.stack);
res.status(500);
res.render('500');
});
app.listen(app.get('port'), function() {
console.log('Express started on http://localhost:' +
app.get('port') + '; press Ctrl-C to terminate.');
});
您可以尝试在require语句中使用和不使用3
,但无论哪种方式都应该有效。
希望这能有所帮助!!!
相关文章:
- 可以前端maven插件使用节点,npm已经安装
- 无法安装节点sass相关性
- 安装节点6后出错,npm ERR!无效版本:1.0.5beta
- 要安装依赖项的自定义节点模块
- 全局安装的NodeJS npm模块不执行节点的主/bin JavaScript文件
- 有没有一种方法可以在安装npm之前检查节点和npm的版本
- 如何设置节点谷歌地图?缺乏关于安装Node包的一些隐含知识
- 安装和使用节点 JS
- 节点.js npm 安装错误
- 我们将 npm 安装的节点模块放在 Meteor 项目中的什么位置
- 动态安装和加载节点.js模块
- 安装 Node.js 在服务器上从同一网络上的另一台计算机访问节点
- 安装后找不到节点专用模块
- 安装节点.js在共享梦想主机
- NodeRed Server:在运行时安装自定义节点
- 安装节点.js
- 安装节点模块时出错---common.gypi未找到
- 我应该安装节点和npm,如果我不是一个节点程序,但我想使用电源
- 使用GoDaddy提供的SSL证书安装节点https服务器
- 如何全局安装节点模块