使用Express框架搭建Nodejs blog练习时,出现了错误
使用Express框架搭建Nodejs blog练习时,出现了错误
我是在Ubuntu上搭建开发环境的,所用的node版本是
当然可以。以下是一个详细的解答,包含可能遇到的错误及其解决方案。
使用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
,你应该能看到首页。
常见问题及解决方法
-
依赖未安装:确保所有依赖项都已正确安装。你可以尝试删除
node_modules
文件夹并重新安装依赖:rm -rf node_modules npm install
-
端口被占用:如果端口3000已被其他应用占用,你可以更改端口号:
const PORT = process.env.PORT || 3001;
-
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>
常见问题及解决方案
-
MongoDB连接失败:
- 确保MongoDB服务已启动。
- 检查数据库连接字符串是否正确。
-
路由问题:
- 确保所有路由都已定义并正确配置。
- 检查静态文件路径是否正确设置。
-
模板引擎问题:
- 确保EJS已正确安装并作为模板引擎设置。
- 检查视图文件名与渲染时使用的名称一致。
希望这些信息对你有所帮助!如果还有具体错误信息,请提供详细描述,以便进一步诊断。