node版本无法build
检查Node.js版本。
node版本无法build,检查Node.js版本,请确保您的Node.js版本符合项目所需的最低版本要求,如果您的Node.js版本过低,可以尝试升级到最新版本。
Node.js是一款基于Chrome V8引擎的JavaScript运行时环境。它允许开发者使用JavaScript语言编写后端服务器应用程序。
运行在服务端的Node.js代码需要编译吗
首先实现一个处理静态资源的函数,其实就是对本地文件的读取操作,这个方法已满足了上面说的静态资源的处理。
//处理静态资源
function
staticResHandler(localPath,
ext,
response)
{
fs.readFile(localPath,
"binary",
function
(error,
file)
{
if
(error)
{
response.writeHead(500,
{
"Content-Type":
"text/plain"
});
response.end("Server
Error:"
+
error);
}
else
{
response.writeHead(200,
{
"Content-Type":
getContentTypeByExt(ext)
});
response.end(file,
"binary");
}
});
}
如何使用nodejs搭建开发环境
1.安装NodeJS
1.编译环境
源代码编译器,通常 Unix/Linux平台都自带了C++的编译器(GCC/G++)。如果没有,请通过当前发行版的软件包安装工具安装make,g++这些编译工具。
Debian/Ubuntu下的工具是apt-get
RedHat/centOS下通过yum命令
Mac OS X下你可能需要安装xcode来获得编译器
2.网络加密
其次,如果你计划在Node.js中启用网络加密,OpenSSL的加密库也是必须的。该加密库是libssl-dev,可以通过apt-get install libssl-dev等命令安装。
3.手动编译
wget
tar zxvf node-v0.6.1.tar.gz
cd node-v0.10.26
./configure
上面几行命令是通过wget命令下载最新版本的代码,并解压之。./configure命令将会检查环境是否符合Nodejs的编译需要。
make
make install
2.安装NPM
1.NPM的全称是Node Package Manager, 是NodeJs的第三方安装库。
curl | sh
curl 是通过curl命令获取这个安装shell脚本,按后通过管道符| 将获取的脚本交由sh命令来执行。
2.更改第三方库
npm install underscore
underscore@1.2.2 ./node_modules/underscore
由于一些特殊的网络环境,直接通过npm install命令安装第三方库的时候,经常会出现卡死的状态。幸运的是国内CNode社区的@fire9 同学利用空余时间搭建了一个镜像的NPM资源库,服务器架设在日本,可以绕过某些不必要的网络问题。你可以通过以下这条命令来安装第三方库:
npm --registry "
如果你想将它设为默认的资源库,运行下面这条命令即可:
npm config set registry " "
通过npm安装包。安装好之後会自动被安装到 /usr/local/bin 目录下,而相依的函式库也会自动安装到 /usr/local/lib/node 目录下,实在是非常方便。
3.安装NodeJS调试环境
1.用npm命令安装全局模式的 node-inspector组件
sudo npm install -g node-inspector
2.更改端口
修改 node-inspector/lib/config.js的端口
’web-port’: {
desc: ‘Port to host the inspector’,
convert: conversions.stringToInt,
defaultValue: 6868
},
3.使用
node-inspector启动一个调试工具
在chrome浏览器中输入打开chrome的调试模式
使用node debug调试nodeJS项目
node --debug-brk=5858 read.js
可以在chrome中查看到调试信息
4.使用Sublime构建NodeJS
设置Sublime的Builder-
Tools - Build System - New Build System
将如下代码写入
{
“cmd”: ["/usr/local/bin/node", “$file”],
“file_regex”: “^[ ]File "(…?)”, line ([0-9]*)",
“selector”: “source.javascript”
}
保存为NodeJs.sublime-build文件
如此可以直接使用Com+B来使用nodejs运行程序
nodeJS(前后端分离、优势、不足
文章阅读,来自 前端之巅 去哪儿网 部分摘录
1.项目分离,页面分离
第一种是项目分离,承载页面分离。他的特点是简单,快速,前端只关注浏览器方面,除浏览器端之外都是后端负责。
缺点 :
沟通成本高,前期,前端需要使用 ng 或者代理工具调试,后期,还要把页面给到后端,并且新建一个对应的路由。
2.项目分离,只是后端的页面,放到了前端项目里
后端只需要配置路由,最终上线时,由发布系统负责把前端中的页面,自动同步到后端相应的目录中。其中相应的目录需要前后端提前约定,不然后端在渲染页面的时候,就会找不到相应的文件。相比第一种方案,稍微有点进步。沟通成本会有一定的降低。
缺点 :
不过如果需要在页面里做一些业务逻辑处理,还需要前端同学掌握和学习 velocity 语法,对于新同学而言看似掌握的了一门新语法,但实际操作起来并非想象中的流畅。
3.第三种方案是使用 Nodejs 作为页面渲染层,后端只负责数据的生产工作
这也是目前阶段主要的使用方式。它的优点是前端同学对于整个页面的生命周期有完全的控制权,包括开发,调试,部署,上线以及后期的性能监控,应用监控等等。可做的事情也更多,比如使用 React SSR 做同构渲染。
缺点 :
对于前端同学的要求也会很高,除学习前端知识外,还要学习后端知识。
整个应用都是由前端统一负责,所以还需要接收报警电话或者短信,7*24 小时,都在待命状态。
1.一些前端开发,只关注浏览器端,服务器端开发关注很少,或者根本就不关注 ;
2.认为 Node.js 只适合开发一些工具类的功能,相对于后端开发来看它只是个玩具 ;
3.Node.js 的生态不如其他后端语言生态健全 ;
4.涉及到后端开发的知识面比较广,在没有这些基础知识或者经验积累的基础上,考虑问题比较片面,最终做出的系统问题比较多,容易被后端鄙视 ;
看似问题很多,但实质上只有两个原因,
1,自身知识储备不够。
2,对 Node.js 了解不深,不敢应用在生成环境中,即使应用到生产环境,一旦出现问题,不能快速及时的处理,导致高层认为还不如其他后端语言稳定,降低了我们的话语权。 (很中肯,不摸底,不敢用于项目)
1,提高开发效率,因为有了 Node 之后就不需要配置 Nginx 了,也不需要配置一些代理工具了,所有的页面生命周期都是由前端统一去管理的,这时候不需要其他人进行合作。
2,降低沟通成本,除了接口格式外,不需要和后端进行交互了;
3,前后端职责也更为清晰,因为这时候,界限更为清晰了,后端只负责生产数据,它只提供数据就可以了,至于数据怎么消费,以及怎么用,都由前端去做;
4,可以同时使用 React SSR 技术,做到首屏渲染,提高用户体验,除了首屏之外,还可以做异步的加载、SEO 等操作。
5,Node.js 可提供一些服务,不仅能让我们使用,还可以对外使用,如 RESTful API,这样就不用有求于后端了。
/---------------------------------------------文章摘录结束-------------------------------------------------/
除了号称nodejs界jQuery的express,
另外两个比较不错的
一个是 360 团队的 Thinkjs ,
一个是阿里的 Eggjs
Node JS后端项目开发与生产环境总结
建立在后台模板渲染(ejs, pug)的基础上。前后分离架构请参考 webpack热更新实现
nodemon 在js文件变化后悔重新运行程序,在 package.json 的 scripts 中添加:
nodemon还有许多可选配置,具体参阅 nodemon文档
以koa为例
如若想要将错误抛出到浏览器页面和美化错误页面, express 可用 express-error-handler , koa 可用 onerror
由于是后台模板渲染,所以没法用 webpack-dev-server 进行自动刷新。能做的就是利用 webpack 的 watch 在前端js改变后自动打包,当然还是免不了手动刷新
注意一定要开启 source-map ,不然无法定位报错位置。为通知 webpack 是生产还是开发环境,可以使用 cross-env ,然后在 package.json 的 scripts 中添加:
开发时应运行两个命令:
生产环境一般使用 pm2 , pm2 已经帮我们完成了进程守护和负载均衡,内部实现原理在此不再赘述,具体参考 pm2文档 。
生成的配置文件已包含了生产环境的基本本质。跟多配置请参考 pm2文档 ,在 package.json 文件的 scripts 中添加
生产环境下运行
这时我们可以通过 process 全局变量获取到环境状态,在 app.js 中添加
类似 nginx 的 access.log 和 error.log ,利用 fs 模块的 appendFile 方法来输出日志。首先在项目根目录下新建文件夹 logs
建立一个模板命名为 notFound.pug ,在路由之后渲染
在webpack中添加插件
发布应用时需运行