1. nodejs 安装express的时候可以指定express的版本吗
可以用的,可以用 npm install express@3.* 来安装3.x的最新版本就可以了。
2. WIN7下NodeJs全局安装了express,并且配置了NODE_PATH环境变量,但还是不能在命令行使用express
express,单词拼写错误。
C:UsersSigma>express-V
3.0.0
3. 调试nodejs用哪个版本的eclipse
安装Express。Express是目前最稳定、使用最广泛,而且是Node.js官 方推荐的唯一一个 Web 开发框架。
注意:使用npm install -g express以及cnpm install -g express后,虽然看似安装成功,但是输入express -V时,仍然提示“express不是内部命令”的错误。
最终发现是版本问题,通过执行npm install -g [email protected]后,输入express -V成功!
4. 安装nodejs的时候遇到这个错误,求解答
解决方案如下:
我们要先配置npm的全局模块的存放路径以及cache的路径,例如我希望将以上两个文件夹放在NodeJS的主目录下,便在NodeJs下建立”node_global”及”node_cache”两个文件夹。如下图:
启动cmd,输入两条命令:
npm config set prefix “e:\php\nodejs\node_global”
npm config set cache “e:\php\nodejs\node_cache”
选择express这个比较常用的模块。同样在cmd命令行里面,输入“npm install express -g”(“-g”这个参数意思是装到global目录下,也就是上面说设置的“C:\Program Files\nodejs\node_global”里面。)
关闭cmd,打开系统对话框,“我的电脑”右键“属性”-“高级系统设置”-“高级”-“环境变量”。如下图:
进入环境变量对话框,在系统变量下新建”NODE_PATH”,输入”C:\Program Files\nodejs\node_global\node_moles“。(ps:这一步相当关键。) 2014.4.19新增:由于改变了mole的默认地址,所以上面的用户变量都要跟着改变一下(用户变量”PATH”修改为“C:\Program Files\nodejs\node_global\”),要不使用mole的时候会导致输入命令出现“xxx不是内部或外部命令,也不是可运行的程序或批处理文件”这个错误。
在你的项目目录下面,重新输入npm install ,可以成功解决。
5. nodejs下用npm安装express出错,试过各种方法,都解决不了,求助
npm install express --save;
提示什么错你没贴出来。
如果是因为网络问题的话可以去淘宝出品的cnpm解决,http://npm.taobao.org/
安装好后执行
cnpm install express --save
6. nodejs内置模块有哪些
一、Express框架
前面的章节已经介绍过了,可以使用npm来安装node.js模块。具体操作请参照以前写的nodejs概论。
Express是一个nodejs的web开源框架,用于快速的搭建web项目。其主要集成了web的http服务器的创建、静态文本管理、服务器URL地址请求处理、get和post请求处理分发、session处理等功能。
使用方法,在cmd中打开你所想创建web项目的路径。然后输入
Express appname
即可创建一个名为appname的web项目。控制台打印结果
在jada文件中是可以使用for循环和if判断语句的,可以让你体会类似JSP的<%%>和php的<php></php>在网页上输出数据的快感。
三、forever模块
nodejs作为http服务器,需要确保服务顺利进行,要注意一下两点:
1.后台服务运行,监控运行日志,以及http运行日志;
2.确保项目的正常安全运行,Node.js的启动命令node,很大程度无法满足运行需求;
Node.js的forever模块在第二点就可以起到很大的作用,同时其拥有监控文件更改、自动重启等功能。
forever模块的使用方法有两种:1.在命令行中使用
forever -l forever.log -o out.log -e err.log app.js
-l forever.log -o out.log -e err.log分别指定了forever的运行日志,脚本流水日志,脚本运行错误日志,启动后将在本文件夹下产生out.log、err.log文件。
2.在编码中require forever模块使用。
四、Socket.IO模块
Socket.IO模块主要功能是将WebSocket协议应用到所有浏览配厅器。主要用于实时的长连接多求情项目中。
例如:在线联网游戏,实时聊天、实时股票查看、二维码扫描登录掘粗等。
安装方法仍然是在cmd在中输入npm install socket.io
如何使用Socket.IO来创建一个项目。
需要分别实现服务端和客户端的逻辑:
先创建一个服务端的node.js脚本index_server.js
var app = require('http').createServer(handler)//创建服务器app
, io = require('socket.io').listen(app)//引用socket.io模块监听app
, fs = require('fs')//引用文件处理模块
app.listen(80);//指定app监听的端口,第二个参数127.0.0.1可省略
function handler (req, res) {
fs.readFile(__dirname + '/index.html', function (err, data) { if (err) {
res.writeHead(500); return res.end('Error loading index.html');
}
res.writeHead(200);
res.end(data);
});
}
io.sockets.on('connection', function (socket) {
socket.emit('判卖镇news', { hello: 'world' });
socket.on('my other event', function (data) {
console.log(data);
});
});
其中,socket.emit()为Socket发送消息的函数,第一个参数表示发送消息的key值,第二个参数为发送消息的内容,也就是发送的数据。
Socket。on()为Socket接收消息的函数,第一个参数为接收消息的可以值,第二个参数为回调函数,其中回调函数携带的参数为接收消息所发送的数据。
接下来web前端如何使用javaScrit 来连接Socket服务器。
新建一个index_client.html
<script type="text/javascript" src="socket.js"></script>
<script type="text/javascript"> var socket = io.connect('http://localhost');//创建本地sock连接
socket.on('news',function (data) {//Socket接收news消息时执行回调函数 console.log(data);
socket.emit('my other event',{my:'data'});
});</script>
<script type="text/javascript" src="socket.js"></script>加载已经安装好的Socket.io的本地JavaScrit文件。
var socket = io.connect('http://localhost');因为端口为80,所有这里可以不端口号
socket.on('news',function (data){}//客户端接收news消息成功后,发送my other event消息到服务端,发送的消息内容为json对象{my:'data'}
接下来只需要运行服务端的index_server.js文件来启动socket服务
效果:在浏览器输入http://127.0.0.1按F12调出浏览器的控制台console即可看见打印出了一个object对象。
执行完毕后可能会报错:catnot find mole socket.io,说明你的socket.IO没有安装,或已经安装并配置为全局,但你的安装路径并没有配置到在path中,所有无法引用。
你可以选择配置path,或者安装到项目内。这里建议安装到你的项目目录下,而不是简单粗暴的配置为全局。先卸载npm uninstall socket.io 进入指定目录后安装node index_server.js
socket.io详细请参阅 http://cnodejs.org/topic/50a1fcc7637ffa4155b5a264
五、request模块
request模块为开发者提供了一种简单访问HTTP请求的方法。request还支持HTTPS的访问方法。
安装:
npm install requset
request模块基本上覆盖了所有的HTTP请求方式如GET,POST,HEAD,DEL等。但其最基本的两个方法是request.get()和request.post().
get和post的区别
get:
1.使用get向服务器发出和接收的请求会附在url之后。类似:http://www..com?id=1221&name=5555这个url中传递了两个参数,一个为id,一个为name。
2.get请求不能超过1024个字节。
post没有限制,也不会附在url上。
接下来做一个简单的实例
get实例:
首先新建一个服务器app_get.js
var http= require("http");
http.createServer(function(req,res){
res.writeHead(200,{'content-Type':'text/plain'});
res.end('Hello world
'+req.method);
}).listen(1337,"127.0.0.1");
再建一个发送求情的request_get.js文件
var request=require('request');
request.get("http://127.0.0.1:1337",function(error,response,result){
console.log(result);
});
在CMD中运行app_get.js,运行成功后,再打开一个cmd(之前的cmd不要关闭),执行request_get.js文件。
执行后的结果如下
hello world
GET
可以看出,通过request.get方法访问
http://127.0.0.1:1337 返回的结果就是res.end()的参数
post实例:
和上面一样,先新建服务器app_post.js
var http= require("http"),
querystring=require('querystring');
http.createServer(function(req,res){ var postData=""; //开始异步接收客户端post的数据
req.addListener("data",function (postDataChunk) {
postData += postDataChunk;
}); //异步post数据接收完毕后执行匿名回调函数
req.addListener("end",function(){ var postStr=JSON.stringify(querystring.parse(postData));
res.writeHead(200,{'content-Type':'text/plain'});
res.end(postStr+'
'+req.method);
});
}).listen(1400,"127.0.0.1");
然后再新建一个request_post.js
var request=require("request");
request.post('http://127.0.0.1:1400',{form:{'name':'ermu','book':'node.js'}},function (error,response,result) {
console.log(result);
})
像上面一样在cmd中执行后显示的结果如下:
D:
odejssrc
equest>node request_post.js
{"name":"ermu","book":"node.js"}
POST
request post提交了一个json对象{"name":"ermu","book":"node.js"}而服务器接通过获取该POST数据,然后返回客户端,同时将http请求方式也响应到客户端。
request post参数可以有两种传递方式。
其中,第一种是将url和form表单的数据作为json参数在request post传递。举例如下:
request.post('url':'http://127.0.0.1:1400',form:{'name':'ermu','book':'node.js'}},function (error,response,result) {
console.log(result);
})
另一种是将url和form作为两个参数,上面的实例就是使用这种方法。
六、 Formidable模块
该模块的目的是为了解决文件上传。
在原生的node.js模块中,提供了获取post数据的方法,但是并没有直接获取上传文件。
7. 手把手教前端从0到1通过Node+Express开发简易接口,项目开发+部署服务器(亲身痛苦经历)
?大家好,我是Smooth,一名大二的SCAU前端er?如文章有误,恳请评论区指正,谢谢!?写作不易,「点赞」+「收藏」+「转发」?谢谢支持!
背景经过网上各种博客的洗礼与寻找,花了一早上终于解决了这个基本问题,完成了前端到后端从0到1的第一小步,为了记录一下痛苦的过程以及帮助后人少走弯路,因此写下这篇博客
前置知识拥有一台服务器,这里我选用阿里云(后续直接通过阿里云界面的远程连接来操作服务器,按懒得用SSH客户端软件了)
安装了Node环境(具体操作请自行查看官网文档https://nodejs.org/zh-cn/download/)
准备好后,那么便开始,争取十分钟拿下!
开发阶段创建一个express项目远程连接服务器,进入命令行界面,然后开始下面步骤
1.创建文件夹,初始化项目mkdirdemo//新建一个文件夹
cddemo//进入该文件夹
npminit-y//初始化一个npm库
2.安装该项目所需依赖npminstallexpress//安装express依赖
npminstallbody-parser//安装body-parser依赖
并不需要安装cors这个依赖,我看很多项目都有这个,其实根本没必要
3.开始写接口此处为了演示,只写一个简单的常用的get接口,具体代码如下:
//app.jsconstexpress=require('express');constapp=express();constbodyParser=require('body-parser');//允许跨域访问app.all('*',function(req,res,next){res.header("Access-Control-Allow-Origin","*");//所有Origin来源都允许res.header("Access-Control-Allow-Headers","X-Requested-With");res.header("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS");res.header("X-Powered-By",Ɖ.2.1');res.header("Content-Type","application/json;charset=utf-8");next();});//处理http请求,解析app.use(bodyParser.urlencoded({extended:false}));//定义变量,做为返回数据letmyGet={method:"get",age:20,name:"Smooth",url:"https://juejin.cn/user/1302297507801358"}//get请求app.get('/getDemo',(req,res)=>{res.status(200);res.json(myGet);//返回处理结果,即将一个对象转换成JSON字符串返回});app.listen(3000,()=>console.log(!'))4.本地测试先输入nodeapp.js将express项目暂时跑起来
若出现如下提示则表示运行成功
5.写一个简单的html请求一下接口//index.html<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"/><metahttp-equiv="X-UA-Compatible"content="IE=edge"/><metaname="viewport"content="width=device-width,initial-scale=1.0"/><title>痛苦经历</title><linkrel="stylesheet"href="./style.css"/><scriptsrc="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.js"></script><style>body{margin:0;padding:0;font-family:sans-serif;background-color:#ecf0f1;}.box{width:300px;padding:40px;top:50%;left:50%;transform:translate(-50%,-50%);position:absolute;background-color:#34495e;text-align:center;}.boxinput[type="text"]{background:none;display:block;text-align:center;border:0;margin:20pxauto;border:2pxsolid#2980b9;padding:14px10px;width:200px;outline:none;color:white;border-radius:24px;transition:0.5s;}.boxinput[type="text"]:focus{width:280px;border-color:#3498db;}.boxinput[type="button"]{color:white;background:none;display:block;text-align:center;border:0;margin:20pxauto;border:2pxsolid#2ecc71;padding:14px10px;cursor:pointer;width:180px;outline:none;border-radius:24px;transition:0.25s;}.boxinput[type="button"]:hover{background-color:#2ecc71;}h1{color:#ecf0f1;}</style></head><body><formclass="box"method="post"><h1>痛苦经历</h1><inputtype="text"name="firstName"placeholder="姓名"class="name"/><inputtype="text"name="firstPassword"placeholder="博客链接"class="url"/><inputtype="button"name="firstSubmit"value="点击读取信息"class="btn"/></form></body><scripttype="text/javascript">//CORS$(".btn").on("click",function(){console.log("CORS方法发生更改");$.ajax({type:"get",url:"http://localhost:3000/getDemo",success:function(res){console.log(res);//document.getElementsByClassName('url')[0].value=res.url;//document.getElementsByClassName('name')[0].value=res.name;},error:function(err){console.log(err);},});});</script></html>浏览器运行结果如下,则表示成功~
本地测试代码没问题后,到了这里接口开发阶段完成啦!!!
服务器部署1.购置服务器先买一个服务器,这里演示我买的是阿里云
2.服务器安装Node环境可以通过宝塔直接安装Node,也可以通过在服务器上依次运行以下指令安装
yuminstall-yepel-release//安装附加软件包项目epel
yuminstall-ynodejs//安装nodejs
node-v//运行命令查看nodejs版本,测试是否安装成功,若如下图出现版本号则安装成功
3.通过宝塔将写好的app.js文件上传到服务器进入服务器的远程连接的黑窗口页面后
先输入:sudosuroot进入root用户
再查看面板入口:/etc/init.d/btdefault
输入对应网址并输入账号密码即可来到宝塔界面,然后点击左侧的文件,然后上方点击根目录
新建一个api文件夹,并将app.js文件直接拖入该页面即可成功上传,如下图
4.在服务器安装依赖并运行app.js文件来运行后端在服务器黑窗口页面通过cdxxx的指令运行到含有app.js文件的地方,即输入ls有该文件
然后依次执行npminit-y,npminstallbody-parser,npminstallexpress安装依赖
执行nodeapp.js运行该文件,出现如下图说明运行成功,此时可访问http://服务器ip:3000/getDemo,如果是一个JSON文件,那么便部署成功!
如果执行文件后过10s还是无法通过以上url方式访问,那么可能是服务器防火墙没开该端口权限或是没开放该端口
防火墙来到该页面,新填该端口即可
没开放该端口一开始我是卡在这一步,气死了
开放端口命令:/sbin/iptables-IINPUT-ptcp--dport8080-jACCEPT
以上两步都完成了话,按理来说是能访问到了,如果还不行欢迎在评论区提出
5.保持服务器接口一直运行由于刚刚我们是通过nodeapp.js来运行后端接口,如果关掉这个黑窗口那该后端项目也随之停了,如果想一直运行在服务器上,可通过pm2启动项目,并管理进程
pm2是一个启动项目并管理程序的工具,如果你项目意外死掉了,它可以自动帮你重启。类似的工具还有很多,大家自行Google之~如果有小伙伴不了解pm2,指路http://pm2.keymetrics.io/docs/usage/quick-start/
安装pm2
npmi-gpm2检测pm2是否安装成功
pm2-v若出现如下结果,则说明你pm2安装ok啦!
使用pm2启动项目
cd你服务器项目目录pm2startapp.js//启动即可启动成功如下所示:
(4)测试
我的项目使用的是3000端口,所以http://服务器ip:3000/getDemo就可以访问啦,以下是我的ip:端口/接口名称访问结果
到此服务器端部署算是完成啦!
其他知识由于此次教程是将express项目运行在服务器的3000端口,如果通过该端口访问不到express项目,可以通过以下方式逐步排查问题
查看该端口是否开放且有项目lsof-i:端口号
如果没有任何输出则说明没有开启该端口号
下图以3000端口为例,检查是否开放
也可以使用lsof-i命令直接将开放的端口输出,来查看某些端口是否开放。
最后我是Smoothzjc,致力于产出更多且不仅限于前端方面的优质文章
大家也可以关注我的公众号@Smooth前端成长记录,及时通过移动端获取到最新文章消息!
写作不易,「点赞」+「收藏」+「转发」?谢谢支持?
往期推荐《都2022年了还不考虑来学ReactHook吗?6k字带你从入门到吃透》
《一份不可多得的Webpack学习指南(1万字长文带你入门Webpack并掌握常用的进阶配置)》
《通过React15~17的优化迭代来简单聊聊Fiber》
《【offer收割机之面试必备】一篇非常全面的从URL输入到页面展现的全过程精华梳理》
《【offer收割机之手写系列】10分钟带你掌握原理并手写防抖与节流的立即/非立即执行版本》
《【offer收割机之CSS回顾系列】请你解释一下什么是BFC?他的应用场景有哪些?》
《Github+hexo实现自己的个人博客、配置主题(超详细)》
《10分钟让你彻底理解如何配置子域名来部署多个项目》
《一文理解配置伪静态解决部署项目刷新页面404问题
《带你3分钟掌握常见的水平垂直居中面试题》
《【建议收藏】长达万字的git常用指令总结!!!适合小白及在工作中想要对git基本指令有所了解的人群》
《浅谈javascript的原型和原型链(新手懵懂想学会原型链?看这篇文章就足够啦!!!)》
原文:https://juejin.cn/post/7097831496550973454