node.js项目开发问题集锦(不定期更新,随时把开发过程中遇到的问题加上)
2014-07-03 15:32
896 查看
1、用express开发站点时,怎么定义通用的头部和尾部
方案1:用类似asp时代的include添加,如ejs模板:
<% include ../header.ejs %>
<h1 class="page-header">
这里是内容。
注:..表示header.ejs在上一级目录,ejs扩展名可以去掉,直接写:include ../header
</h1>
<% 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"
}
};然后在其它文件中这么调用:
7、express项目中,直接创建并返回静态html文件
方案1:把html文件放到项目 的public目录下,如/public/abc/def.html
那么请求url就是: http://localhost:3000/abc/def.html
方案2:读取文件后,输出字符串的方式,代码如下:
方案1:用类似asp时代的include添加,如ejs模板:
<% include ../header.ejs %>
<h1 class="page-header">
这里是内容。
注:..表示header.ejs在上一级目录,ejs扩展名可以去掉,直接写:include ../header
</h1>
<% 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项目开发问题集锦(不定期更新,随时把开发过程中遇到的问题加上)--转载
- node.js开发中遇到的问题(不定期更新)
- android开发过程中遇到的问题小结(不定期更新)
- android开发过程中遇到的问题小结(不定期更新)
- 关于android 开发过程中遇到的问题,不定期更新
- 用node.js开发 ejs博客项目时遇到的问题
- node开发指南中的microblog项目中遇到的问题总结及解决方法
- 一个基于SSH的实践项目在开发过程中遇到的问题汇总
- 项目开发过程中遇到的问题
- 140227项目开发及上线过程遇到的10个问题(重点: FCK过滤替换)
- Mozilla扩展开发过程遇到的问题(持续更新)
- [项目过程中所遇到的各种问题记录]工具篇——.NET开发时常用的工具类库
- 公司项目开发过程中遇到的问题总结!
- android开发过程遇到的问题和解决方案(不断更新)
- Android项目实战_新浪微博客户端开发过程中遇到的问题及解决办法01
- Java开发过程中遇到的一些小错误集锦-以后会不断地更新
- 软件项目开发过程中主要遇到的核心问题小结(转 吉日嘎拉)
- [项目过程中所遇到的各种问题记录]工具篇——.NET开发时常用的工具类库
- 软件项目开发过程中主要遇到的核心问题小结
- QT学习过程中遇到的问题集锦(不断更新)