初学Nodejs,请大家帮帮看看这个问题,多谢多谢
初学Nodejs,请大家帮帮看看这个问题,多谢多谢
我用命令express -e ejs microblog,生成的app.js有问题啊。如下是app.js的全部内容。
,/**, * Module dependencies., */,var express = require(‘express’);,var routes = require(’./routes’);,var user = require(’./routes/user’);,var http = require(‘http’);,var path = require(‘path’);,var app = express();,// all environments,app.set(‘port’, process.env.PORT || 3000);,app.set(‘views’, __dirname + ‘/views’);,app.set(‘view engine’, ‘ejs’);,app.use(express.favicon());,app.use(express.logger(‘dev’));,app.use(express.bodyParser());,app.use(express.methodOverride());,app.use(app.router);,app.use(express.static(path.join(__dirname, ‘public’)));,// development only,if (‘development’ == app.get(‘env’)) {, app.use(express.errorHandler());,},app.get(’/’, routes.index);,app.get(’/users’, user.list);,http.createServer(app).listen(app.get(‘port’), function(){, console.log('Express server listening on port ’ + app.get(‘port’));,});,
当然可以!根据你提供的 app.js
文件内容,看起来你使用的是 Express 框架,并且生成了一个基于 EJS 模板引擎的应用程序。以下是对你的问题的一些分析和建议:
问题分析
- 模块导入错误:在你的代码中,
require
函数的引号使用了非标准字符(例如‘
和’
),这可能会导致语法错误。 - Express 中间件的更新:
express.favicon
,express.logger
,express.bodyParser
,express.methodOverride
等中间件在较新的版本中已经被移除或替换为其他形式。
解决方案
首先,确保你使用的 express
版本是最新的,并且正确安装了所有依赖项。你可以通过以下命令安装最新的 express
及其相关中间件:
npm install express --save
npm install ejs --save
npm install body-parser --save
npm install method-override --save
npm install serve-favicon --save
npm install morgan --save
然后,更新你的 app.js
文件如下:
/**
* Module dependencies.
*/
const express = require('express');
const routes = require('./routes');
const user = require('./routes/user');
const http = require('http');
const path = require('path');
const app = express();
// all environments
app.set('port', process.env.PORT || 3000);
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');
app.use(express.static(path.join(__dirname, 'public')));
app.use(require('serve-favicon')(path.join(__dirname, 'public', 'favicon.ico')));
app.use(require('morgan')('dev'));
app.use(require('body-parser').urlencoded({ extended: false }));
app.use(require('method-override')());
app.use((req, res, next) => {
res.locals.showTests = app.get('env') !== 'production';
next();
});
if (app.get('env') === 'development') {
app.use(require('errorhandler')());
}
app.get('/', routes.index);
app.get('/users', user.list);
http.createServer(app).listen(app.get('port'), () => {
console.log(`Express server listening on port ${app.get('port')}`);
});
代码解释
- 模块导入:使用标准的单引号
'
和双引号"
。 - 中间件更新:
express.favicon
替换为serve-favicon
express.logger
替换为morgan
express.bodyParser
替换为body-parser
的urlencoded
方法express.methodOverride
替换为method-override
- 环境变量设置:在开发环境中添加错误处理器。
- 路由定义:保持不变。
希望这些修改能解决你的问题。如果还有其他疑问,请随时提问!
没有换行缩进吗?。。。
帮顶好了
没有,我用notepad++,打开就是如此
没人遇到过吗,求助啊。。。
你没有npm install吧
upgrade node to 0.8 or 0.10
The version is v0.10.15
then why does your output say
npm ERR! cwd C:\Documents and Settings\lirr00124217\microblog npm ERR! node -v v0.6.1 npm ERR! npm -v 1.0.105 npm ERR! code ECONNRESET
I install nodejs with node-v0.10.15-x86.msi. But I don’t know why the error information say v0.6.1
yeah i don’t know either. so you should figure that out first. maybe you have another version installed?
Thank you very much. I got it.
从你提供的 app.js
代码来看,大部分配置都是正确的,但有一些地方需要注意和改进。
首先,确保你已经安装了所有必要的依赖包,比如 express
、ejs
等。你可以通过以下命令来安装:
npm install express ejs --save
另外,从 Express 4.0 开始,express.methodOverride()
和 express.favicon()
这些中间件已经被移除,所以需要使用其他替代方案或者直接删除这些代码。
下面是一个更新后的 app.js
示例代码:
var express = require('express');
var path = require('path');
var favicon = require('@stdlib/utils-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var routes = require('./routes/index');
var users = require('./routes/users');
var app = express();
// 设置视图引擎为 EJS
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');
// 使用中间件
app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
// 设置路由
app.get('/', routes.index);
app.get('/users', users.list);
// 启动服务器
app.listen(3000, () => {
console.log('Express server listening on port 3000');
});
说明
-
中间件:
express.favicon()
被替换为@stdlib/utils-favicon
(如果你需要图标)。express.logger('dev')
被替换为morgan
,用于日志记录。express.bodyParser()
被替换为body-parser
包。
-
视图路径:
- 使用
path.join
来动态构建路径,避免硬编码问题。
- 使用
-
启动服务器:
- 使用
app.listen
方法来启动服务器。
- 使用
确保你已经创建了对应的 routes/index.js
和 routes/users.js
文件,并且这些文件中定义了 index
和 list
函数。
希望这能帮助你解决遇到的问题!如果还有其他问题,请随时提问。