热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

node.js项目开发问题集锦(不定期更新,随时把开发过程中遇到的问题加上)

1、用express开发站点时,怎么定义通用的头部和尾部方案1:用类似asp时代的include添加,如ejs模板:<%include..header.ejs%>

1、用express开发站点时,怎么定义通用的头部和尾部
    方案1:用类似asp时代的include添加,如ejs模板:

<% include ../header.ejs %>

这里是内容。 注:..表示header.ejs在上一级目录,ejs扩展名可以去掉,直接写:include ../header

<% include ../footer %>
    方案2:用类似于MVC的layout模板,这个要安装一个模块: npm install express-partials
          具体如何应用,大家可以搜索: node.js express layout
          这里就不详述了


2、Windows下,使用WebStorm8,无法调试express项目,排查了半天,团队里有些人能调试,有些人不能调试,
现象是点击运行,能正常运行站点,但是点击调试,在WebStorm的Console窗口,就会出现进程自动退出的提示:

"C:\Program Files (x86)\JetBrains\WebStorm 8.0.3\bin\runnerw.exe" "C:\Program Files\nodejs\node.exe" --debug-brk=54923 --nolazy bin\www
debugger listening on port 54923

Process finished with exit code -1073741510 (0xC000013A: interrupted by Ctrl+C)
汗,竟然说是Ctrl+C导致的中断…… 根据这个提示,百度和Google都查了半天,一点消息也没有,

反复排查可调试的项目和不能调试的项目,终于发现了,原因就是:
项目所在的路径里,含有中文字符……
记住:开发node.js项目,文件所在路径,一定不能有中文字符

3、node.js的项目文件一定要用utf-8的编码格式保存,否则文件内容里的中文等双字节字符,就会出问题,出现各种莫名其妙的问题哦

4、node.js开发的站点,只能监听指定端口,不像IIS,不支持多主机头(多域名),如果确实要支持多主机头,只能通过nginx之类的反向代理,映射到不同端口的node.js进程

5、json文件里不支持注释,任何格式的注释都不支持,如 //  /* */ .
如果希望添加注释,只能用键值对方案,如:{"a":123, "a的含义": "就是一个数字"}

6、node.js没有类似Asp.net里的Web.config文件,不过可以用一个json对象代替,比如在项目根目录下添加一个settings.js文件,内容如下:

module.exports = {
    abc : 123,
    def : "www.baidu.com",
    mysql:{
            host:"192.168.189.100",
            user:"root",
            database:"dbTest",
            port:"3306",
            password:'123',
            connectionLimit:10,
            charset:"utf8"
        }
};
然后在其它文件中这么调用:
var mysql = require('mysql');
var settings = require('../settings');
// 获取def属性,输出
console.log(settings.def);
// 获取mysql连接信息
var pool  = mysql.createPool(settings.mysql);

7、express项目中,直接创建并返回静态html文件
方案1:把html文件放到项目 的public目录下,如/public/abc/def.html
    那么请求url就是: http://localhost:3000/abc/def.html
方案2:读取文件后,输出字符串的方式,代码如下:
var express  = require('express');
var path  = require('path');
var router = express.Router();

router.get('/', function(req, res) {
    sendHtmlFile(res, "./index.js");
});

module.exports = router;

function sendHtmlFile(res, relativePath){
    var htmlpath = getAbsPath(relativePath);
    // 按扩展名自动识别并输出响应的Content-Type
    res.sendfile(htmlpath);
}

// 转换相对路径为绝对路径
function getAbsPath(relativePath){
    var htmlpath = __dirname + "/" + relativePath;
    return path.resolve(htmlpath);
}




推荐阅读
  • 本文介绍了如何使用 Node.js 和 Express(4.x 及以上版本)构建高效的文件上传功能。通过引入 `multer` 中间件,可以轻松实现文件上传。首先,需要通过 `npm install multer` 安装该中间件。接着,在 Express 应用中配置 `multer`,以处理多部分表单数据。本文详细讲解了 `multer` 的基本用法和高级配置,帮助开发者快速搭建稳定可靠的文件上传服务。 ... [详细]
  • Linux下MySQL 8.0.28安装指南
    本文详细介绍了在Linux系统上安装MySQL 8.0.28的步骤,包括下载数据库、解压数据包、安装必要组件和启动MySQL服务。 ... [详细]
  • Android 构建基础流程详解
    Android 构建基础流程详解 ... [详细]
  • 在Ubuntu上安装MySQL时解决缺少libaio.so.1错误及libaio在MySQL中的重要性分析
    在Ubuntu系统上安装MySQL时,遇到了缺少libaio.so.1的错误。本文详细介绍了如何解决这一问题,并深入探讨了libaio库在MySQL性能优化中的重要作用。对于初学者而言,理解这些依赖关系和配置步骤是成功安装和运行MySQL的关键。通过本文的指导,读者可以顺利解决相关问题,并更好地掌握MySQL在Linux环境下的部署与管理。 ... [详细]
  • 在处理木偶评估函数时,我发现可以顺利传递本机对象(如字符串、列表和数字),但每当尝试将JSHandle或ElementHandle作为参数传递时,函数会拒绝接受这些对象。这可能是由于这些句柄对象的特殊性质导致的,建议在使用时进行适当的转换或封装,以确保函数能够正确处理。 ... [详细]
  • 在 CentOS 6.5 系统上部署 VNC 服务器的详细步骤与配置指南
    在 CentOS 6.5 系统上部署 VNC 服务器时,首先需要确认 VNC 服务是否已安装。通常情况下,VNC 服务默认未安装。可以通过运行特定的查询命令来检查其安装状态。如果查询结果为空,则表明 VNC 服务尚未安装,需进行手动安装。此外,建议在安装前确保系统的软件包管理器已更新至最新版本,以避免兼容性问题。 ... [详细]
  • 如何高效地安装并配置 PostgreSQL 数据库系统?本文将详细介绍从下载到安装、配置环境变量、初始化数据库、以及优化性能的全过程,帮助读者快速掌握 PostgreSQL 的核心操作与最佳实践。文章还涵盖了常见问题的解决方案,确保用户在部署过程中能够顺利解决遇到的各种挑战。 ... [详细]
  • 掌握PHP编程必备知识与技巧——全面教程在当今的PHP开发中,了解并运用最新的技术和最佳实践至关重要。本教程将详细介绍PHP编程的核心知识与实用技巧。首先,确保你正在使用PHP 5.3或更高版本,最好是最新版本,以充分利用其性能优化和新特性。此外,我们还将探讨代码结构、安全性和性能优化等方面的内容,帮助你成为一名更高效的PHP开发者。 ... [详细]
  • 解决Only fullscreen opaque activities can request orientation错误的方法
    本文介绍了在使用PictureSelectorLight第三方框架时遇到的Only fullscreen opaque activities can request orientation错误,并提供了一种有效的解决方案。 ... [详细]
  • MicrosoftDeploymentToolkit2010部署培训实验手册V1.0目录实验环境说明3实验环境虚拟机使用信息3注意:4实验手册正文说 ... [详细]
  • 单元测试:使用mocha和should.js搭建nodejs的单元测试
    2019独角兽企业重金招聘Python工程师标准BDD测试利器:mochashould.js众所周知对于任何一个项目来说,做好单元测试都是必不可少 ... [详细]
  • 在CentOS 7环境中安装配置Redis及使用Redis Desktop Manager连接时的注意事项与技巧
    在 CentOS 7 环境中安装和配置 Redis 时,需要注意一些关键步骤和最佳实践。本文详细介绍了从安装 Redis 到配置其基本参数的全过程,并提供了使用 Redis Desktop Manager 连接 Redis 服务器的技巧和注意事项。此外,还探讨了如何优化性能和确保数据安全,帮助用户在生产环境中高效地管理和使用 Redis。 ... [详细]
  • 如何将Python与Excel高效结合:常用操作技巧解析
    本文深入探讨了如何将Python与Excel高效结合,涵盖了一系列实用的操作技巧。文章内容详尽,步骤清晰,注重细节处理,旨在帮助读者掌握Python与Excel之间的无缝对接方法,提升数据处理效率。 ... [详细]
  • Python 伦理黑客技术:深入探讨后门攻击(第三部分)
    在《Python 伦理黑客技术:深入探讨后门攻击(第三部分)》中,作者详细分析了后门攻击中的Socket问题。由于TCP协议基于流,难以确定消息批次的结束点,这给后门攻击的实现带来了挑战。为了解决这一问题,文章提出了一系列有效的技术方案,包括使用特定的分隔符和长度前缀,以确保数据包的准确传输和解析。这些方法不仅提高了攻击的隐蔽性和可靠性,还为安全研究人员提供了宝贵的参考。 ... [详细]
  • 利用爬虫技术抓取数据,结合Fiddler与Postman在Chrome中的应用优化提交流程
    本文探讨了如何利用爬虫技术抓取目标网站的数据,并结合Fiddler和Postman工具在Chrome浏览器中的应用,优化数据提交流程。通过详细的抓包分析和模拟提交,有效提升了数据抓取的效率和准确性。此外,文章还介绍了如何使用这些工具进行调试和优化,为开发者提供了实用的操作指南。 ... [详细]
author-avatar
用户hxjr5k4y3f
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有