Express项目报_dirname is not defined错误及控制台爱心显示问题求解
Express项目问题解决方案
问题1:_dirname is not defined报错
- 根因:Node.js内置的全局变量是两个连续下划线开头的
__dirname,代码中仅写了单个下划线_dirname属于拼写错误。 - 修复:将静态资源配置行的
_dirname修改为__dirname即可。
问题2:控制台无法正确输出PORT值
- 根因:原打印语句没有将PORT变量插值到输出内容中,爱心标识本身不需要额外配置,只要字符编码正常即可正常显示。
- 修复:将控制台打印语句改为模板字符串写法,把PORT变量注入输出内容。
额外隐藏问题修正
原代码中express.urlencoded的配置项拼写错误,entended: false应改为extended: false,否则请求体解析配置不会生效。
修正后完整代码
// Require require('dotenv').config(); const express = require('express'); const ejs = require('ejs'); const path = require('path'); const morgan = require('morgan'); const helmet = require('helmet'); // App const app = express(); // Middlewares // Morgan app.use(morgan('dev')); // View engine ejs app.set('view engine', 'ejs'); //Public static folder app.use(express.static(path.join(__dirname, 'public'))); // Body Parser (replaced with express) app.use(express.urlencoded({ extended: false })); app.use(express.json()); // Helmet app.use(helmet()); // External routes // Listener let PORT = process.env.PORT || 3000; app.listen(PORT, () => { console.log(`Server beating 💓 on PORT ${PORT}`); })
内容的提问来源于stack exchange,提问作者Omania
相关产品推荐
相关产品推荐

