使用Express框架搭建Nodejs blog练习时,出现了错误

使用Express框架搭建Nodejs blog练习时,出现了错误

我是在Ubuntu上搭建开发环境的,所用的node版本是

9 回复

当然可以。以下是一个详细的解答,包含可能遇到的错误及其解决方案。


使用Express框架搭建Nodejs Blog时出现错误

环境配置

首先,确保你已经安装了Node.js和npm。你可以通过以下命令检查Node.js和npm的版本:

node -v
npm -v

假设你的Node.js版本是14.17.0,而npm版本是6.14.13。

创建项目

创建一个新的Node.js项目,并初始化package.json文件:

mkdir myblog
cd myblog
npm init -y

安装依赖

接下来,安装Express和其他必要的依赖:

npm install express body-parser ejs

编写基本服务器代码

在项目的根目录下创建一个名为app.js的文件,并添加以下代码:

const express = require('express');
const bodyParser = require('body-parser');

const app = express();
app.use(bodyParser.urlencoded({ extended: false }));
app.set('view engine', 'ejs');

app.get('/', (req, res) => {
    res.render('index', { title: 'Home Page' });
});

const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
    console.log(`Server is running on port ${PORT}`);
});

创建视图模板

在项目的根目录下创建一个名为views的文件夹,并在其中创建一个名为index.ejs的文件,内容如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title><%= title %></title>
</head>
<body>
    <h1>Welcome to <%= title %></h1>
</body>
</html>

运行应用

现在,你可以运行你的应用:

node app.js

你应该看到类似如下的输出:

Server is running on port 3000

打开浏览器并访问http://localhost:3000,你应该能看到首页。

常见问题及解决方法

  1. 依赖未安装:确保所有依赖项都已正确安装。你可以尝试删除node_modules文件夹并重新安装依赖:

    rm -rf node_modules
    npm install
    
  2. 端口被占用:如果端口3000已被其他应用占用,你可以更改端口号:

    const PORT = process.env.PORT || 3001;
    
  3. EJS引擎未设置:确保在应用中设置了EJS作为视图引擎:

    app.set('view engine', 'ejs');
    

通过以上步骤,你应该能够成功地使用Express框架搭建一个简单的Node.js博客。如果仍然遇到问题,请检查具体的错误信息并进行相应的调试。


希望这些步骤能帮助你解决问题!如果有任何进一步的问题,请随时提问。


我用的nodejs版本是0.6
hua[@sun](/user/sun): node -v 
v0.6.18

建立,运行express blog后运行成功

hua[@sun](/user/sun)-Rev-1-0:~/node/blog$ express blog

create : blog create : blog/package.json create : blog/app.js create : blog/public create : blog/public/javascripts create : blog/public/images create : blog/public/stylesheets create : blog/public/stylesheets/style.css create : blog/routes create : blog/routes/index.js create : blog/routes/user.js create : blog/views create : blog/views/layout.jade create : blog/views/index.jade

install dependencies: $ cd blog && npm install

run the app: $ node app

然后切换到cd blog 运行npm install 后发现无法node app.js运行起来!

hua[@sun](/user/sun)-Rev-1-0:~/node/blog/blog$ node app.js

/home/hua/node/blog/blog/app.js:1
,/**, * Module d
^

module.js:434
var compiledWrapper = runInThisContext(wrapper, filename, true);
                    ^
SyntaxError: Unexpected token ,
at Module._compile (module.js:434:25)
at Object..js (module.js:464:10)
at Module.load (module.js:353:31)
at Function._load (module.js:311:12)
at Array.0 (module.js:484:10)
at EventEmitter._tickCallback (node.js:190:38)

npm运行后得到的结果:

express@3.1.1 node_modules/express`
├── methods@0.0.1`
├── fresh@0.1.0
├── buffer-crc32@0.2.1
├── range-parser@0.0.4
├── cookie@0.0.5
├── cookie-signature@0.0.1
├── debug@0.7.2
├── commander@0.6.1
├── mkdirp@0.3.5
├── send@0.1.0 (mime@1.2.6)
└── connect@2.7.4 (pause@0.0.1, bytes@0.2.0, buffer-crc32@0.1.1, formidable@1.0.11, qs@0.5.1)

 jade@0.29.0 node_modules/jade
├── character-parser@1.0.0
├── commander@0.6.1
├── mkdirp@0.3.5
├── transformers@1.8.3 (promise@2.0.0)
└── monocle@0.1.46 (readdirp@0.2.4)

很不解,求指教

不是显示语法错误么?

有点搞不定!npm install的时候302,vim app.js试着修改后,依旧node不起来

cd blog后输入命令: npm install 接着有可能还会出现缺少插件提示,你按提示把缺少的插件装好,一般就没问题了。

另外要不要把源码发给我,换我的机子运行一下?

谢谢了,我把我的环境重新装了,然后可以了,谢谢!

node 0.6???基于什么理由用这么老的版本…

当然可以。以下是一个关于如何使用Express框架搭建一个简单的Node.js博客应用的示例,并附带一些常见的错误及其解决方法。

安装必要的依赖

首先,你需要安装express和其他必要的库:

npm init -y
npm install express body-parser ejs mongoose

示例代码

接下来,我们创建一个基本的Express应用来实现博客功能:

server.js

const express = require('express');
const bodyParser = require('body-parser');
const mongoose = require('mongoose');

const app = express();

// 使用ejs模板引擎
app.set('view engine', 'ejs');
app.use(bodyParser.urlencoded({ extended: true }));
app.use(express.static('public'));

// 连接MongoDB数据库
mongoose.connect('mongodb://localhost/blogdb', { useNewUrlParser: true, useUnifiedTopology: true });

// 定义Blog模型
const BlogSchema = new mongoose.Schema({
    title: String,
    content: String
});
const Blog = mongoose.model('Blog', BlogSchema);

// 路由
app.get('/', async (req, res) => {
    const blogs = await Blog.find();
    res.render('index', { blogs });
});

app.get('/add', (req, res) => {
    res.render('add');
});

app.post('/add', async (req, res) => {
    const newBlog = new Blog({
        title: req.body.title,
        content: req.body.content
    });
    await newBlog.save();
    res.redirect('/');
});

const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
    console.log(`Server running on port ${PORT}`);
});

views/index.ejs

<!DOCTYPE html>
<html>
<head>
    <title>Blog App</title>
</head>
<body>
    <h1>Blog Posts</h1>
    <a href="/add">Add a new post</a>
    <ul>
        <% blogs.forEach(function(blog) { %>
            <li>
                <h2><%= blog.title %></h2>
                <p><%= blog.content %></p>
            </li>
        <% }); %>
    </ul>
</body>
</html>

views/add.ejs

<!DOCTYPE html>
<html>
<head>
    <title>Add Post</title>
</head>
<body>
    <h1>Add a New Blog Post</h1>
    <form action="/add" method="POST">
        <label for="title">Title:</label>
        <input type="text" id="title" name="title"><br><br>
        <label for="content">Content:</label>
        <textarea id="content" name="content"></textarea><br><br>
        <button type="submit">Submit</button>
    </form>
</body>
</html>

常见问题及解决方案

  1. MongoDB连接失败

    • 确保MongoDB服务已启动。
    • 检查数据库连接字符串是否正确。
  2. 路由问题

    • 确保所有路由都已定义并正确配置。
    • 检查静态文件路径是否正确设置。
  3. 模板引擎问题

    • 确保EJS已正确安装并作为模板引擎设置。
    • 检查视图文件名与渲染时使用的名称一致。

希望这些信息对你有所帮助!如果还有具体错误信息,请提供详细描述,以便进一步诊断。

回到顶部