初学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’));,});,


12 回复

当然可以!根据你提供的 app.js 文件内容,看起来你使用的是 Express 框架,并且生成了一个基于 EJS 模板引擎的应用程序。以下是对你的问题的一些分析和建议:

问题分析

  1. 模块导入错误:在你的代码中,require 函数的引号使用了非标准字符(例如 ),这可能会导致语法错误。
  2. 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')}`);
});

代码解释

  1. 模块导入:使用标准的单引号 ' 和双引号 "
  2. 中间件更新
    • express.favicon 替换为 serve-favicon
    • express.logger 替换为 morgan
    • express.bodyParser 替换为 body-parserurlencoded 方法
    • express.methodOverride 替换为 method-override
  3. 环境变量设置:在开发环境中添加错误处理器。
  4. 路由定义:保持不变。

希望这些修改能解决你的问题。如果还有其他疑问,请随时提问!


没有换行缩进吗?。。。

帮顶好了

没有,我用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 代码来看,大部分配置都是正确的,但有一些地方需要注意和改进。

首先,确保你已经安装了所有必要的依赖包,比如 expressejs 等。你可以通过以下命令来安装:

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');
});

说明

  1. 中间件

    • express.favicon() 被替换为 @stdlib/utils-favicon(如果你需要图标)。
    • express.logger('dev') 被替换为 morgan,用于日志记录。
    • express.bodyParser() 被替换为 body-parser 包。
  2. 视图路径

    • 使用 path.join 来动态构建路径,避免硬编码问题。
  3. 启动服务器

    • 使用 app.listen 方法来启动服务器。

确保你已经创建了对应的 routes/index.jsroutes/users.js 文件,并且这些文件中定义了 indexlist 函数。

希望这能帮助你解决遇到的问题!如果还有其他问题,请随时提问。

回到顶部