热门标签 | 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);
}




推荐阅读
  • 本文介绍了Composer依赖管理的重要性及使用方法。对于现代语言而言,包管理器是标配,而Composer作为PHP的包管理器,解决了PEAR的问题,并且使用简单,方便提交自己的包。文章还提到了使用Composer能够避免各种include的问题,避免命名空间冲突,并且能够方便地安装升级扩展包。 ... [详细]
  • WebSocket与Socket.io的理解
    WebSocketprotocol是HTML5一种新的协议。它的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送 ... [详细]
  • 程序员如何选择机械键盘轴体?红轴和茶轴对比
    本文介绍了程序员如何选择机械键盘轴体,特别是红轴和茶轴的对比。同时还介绍了U盘安装Linux镜像的步骤,以及在Linux系统中安装软件的命令行操作。此外,还介绍了nodejs和npm的安装方法,以及在VSCode中安装和配置常用插件的方法。最后,还介绍了如何在GitHub上配置SSH密钥和git的基本配置。 ... [详细]
  • 【前端工具】nodejs+npm+vue 安装(windows)
    预备先看看这几个是干嘛的,相互的关系是啥。nodejs是语言,类比到php。npm是个包管理,类比到composer。vue是个框架&# ... [详细]
  • 必须先赞下国人npm库作品:node-images(https:github.comzhangyuanweinode-images),封装了跨平台的C++逻辑,形成nodejsAP ... [详细]
  • 先下载nodejs针对windows安装安装就行。自定义安装在对应的文件夹就行安装完之后需要在电脑的环境变量里面添加两个路径通过cmd可以查看自己node的版本号最后通过运行npm ... [详细]
  • Node.js详细安装及环境配置
    1、下载安装根据自己电脑系统及位数选择,我这里选择windows64位.msi格式安装包(官网:https:odejs.orgzh-cndownload).msi和.zip格式区别 ... [详细]
  • 问题内容npmERR!code1npmERR!pathE:\WebProject\jeecgboot-vue3\node_modules\gifsiclenpmERR!com ... [详细]
  • 原文http:a317222029201405212739.iteye.comblog2174140引自http:www.tuicool.comarticlesaeye6rY ... [详细]
  • 这是一篇参考学习使用的文章,但是无法执行通过最近,实验室在做一个适配于手机的web项目(可以说是一个混合应用开发),最后需要打包成apk程序,作为一名对移动开发的研究者,这个打包的 ... [详细]
  • 【node.js】关于node.js,如何解决npm should be run outside of the Node.js REPL, in your normal shell报错?
    问题描述前言,安装node方式采用的是安装包解压的报如下错误:npmshouldberunoutsideoftheNode.jsREPL,inyournormals ... [详细]
  • 使用PhpStorm或WebStorm作为electron IDE
    最近在研究electron,考虑到以前一直用PhpStorm做开发,而且electron就是基于nodejs的,因此很自然的想到要继续用PhpStorm做IDE。开发打开RunDe ... [详细]
  • d3dx9_26.dll极品飞车9修复工具下载及修复教程
    本文介绍了d3dx9_26.dll文件的修复工具下载和修复教程,解释了该dll文件的作用和安装方法,同时提供了其他dll文件下载安装的方法。文章涵盖了3d、windows、p2p、dll、visual studio等知识点,并由未来可期1212投稿。希望该技术和经验能帮到你解决dll文件相关技术问题。 ... [详细]
  • 从壹开始前后端分离【 .NET Core2.0 +Vue2.0 】框架之六 || API项目整体搭建 6.1 仓储模式
    代码已上传Github+Gitee,文末有地址  书接上文:前几回文章中,我们花了三天的时间简单了解了下接口文档Swagger框架,已经完全解放了我们的以前的Word说明文档,并且可以在线进行调 ... [详细]
  • android:EditText属性去边框EditText继承关系:View--TextView--EditTextEditText的属性很多,这里介绍几个:android:h ... [详细]
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社区 版权所有