mac下node.js 安装express后报express command not found
使用brew安装node的时候会自动帮你安装npm,所以npm不用单独去安装,当然如果你想安装最新版本,可以去官网下pkg包安装,http://nodejs.org/
Shell
brew install node
brew install node |
这个步骤node和npm就都安装好了
Shell
sudo npm install -g express
sudo npm install - g express |
全局安装express -g 是全局安装,如果想指定版本安装可以用sudo npm install -g express@4.9.0
注意上面安装的不是命令行工具express(老版本是集成在一起的,现在express4版本,单独分离出来了,放到express-generator包中),而是安装的这个模块,需安装命令行工具需再安装,
Shell
sudo npm install -g express-generator
sudo npm install - g express - generator |
然后就可以使用express命令了,我是官网下载安装的,所以node和npm的路径是 /usr/local/bin 下
Shell
54im@IvonMac ~$express -V 4.9.0 54im@IvonMac ~$node -v v0.10.33 54im@IvonMac ~$npm -v 1.4.28 54im@IvonMac ~$which node /usr/local/bin/node
54im @ IvonMac ~ $express - V 4.9.0 54im @ IvonMac ~ $node - v v0 . 10.33 54im @ IvonMac ~ $npm - v 1.4.28 54im @ IvonMac ~ $which node / usr / local / bin / node |
express 是 Node.js 上最流行的 Web 开发框架,正如他的名字一样,使用它我们可以快速的开发一个 Web 应用。我们用 express 来搭建我们的博客,用 express 初始化了一个工程项目,并指定使用 ejs 模板引擎express -e ejs blog
生成.ejs 的模板引擎,项目名为blog的项目
附录
express4.x新特性
- 健壮的路由系统
- 包含 HTTP helpers (跳转, 缓存等)
- 试图系统支持超过 14 中模板引擎
- Content negotiation
- 专注高性能
- 基于 environment 的配置
- 项目框架生成命令行工具
- 测试全面
express3.x 迁移到 express4.x
译文原址: http://segmentfault.com/blog/gucheen/1190000000603327
原文: https://github.com/strongloop/express/wiki/Migrating-from-3.x-to-4.x
Express 3.x 到 4.0 的迁移指南。你可能对这篇文章也有兴趣 4.x版中的新功能 。
更多的例子和完整的API文档,请参见 Express 4.x 的文档 。
概述
Express 4 不再依赖 Connect 。这意味着所有捆绑的中间件(除了 static
)都不再能从 express
模块中被调用。这些中间件都可以作为下面提及的模块进行调用。这一变化是为了让这些中间件在获取修复,更新和发布的同时不影响 express 的发布周期,反之亦然。
- bodyParser body-parser
- cookieParser cookie-parser
- favicon static-favicon
- session express-session
其他模块在这里 https://github.com/senchalabs/connect#middleware
移除
app.configure()
这种方法不再可用。如果你想配置基于环境的不同路由,使用 if 语句或替代模块。
Shell
app.configure('development', function() { // configure stuff here }); // 现在改为 var env = process.env.NODE_ENV || 'development'; if ('development' == env) { // configure stuff here }
app .configure ( 'development' , function ( ) { / / configure stuff here } ) ; / / 现在改为 var env = process .env .NODE_ENV || 'development' ; if ( 'development' == env ) { / / configure stuff here } |
app.router
这个中间件已经全面改版,以此避免 .use
同 .get
之间的混淆(或者是其他HTTP动作),同时,不再需要手动声明的 app.use(app.router)
(已被移除)。查看下面关于新的中间件和路由 API 的一节。
如果你的代码看起来像这样:
Shell
app.configure('development', function() { // configure stuff here }); // 现在改为 var env = process.env.NODE_ENV || 'development'; if ('development' == env) { // configure stuff here }
app .configure ( 'development' , function ( ) { / / configure stuff here } ) ; / / 现在改为 var env = process .env .NODE_ENV || 'development' ; if ( 'development' == env ) { / / configure stuff here } |
app.router
已被移除,中间件和路由按照它们添加的顺序被执行。在你的代码中,你应该将原本在 app.use(app.router)
之后的向 app.use
的请求移动到其他路由之后(HTTP动作)。
Shell
app.use(cookieParser()); app.use(bodyParser()); /// 其他的中间件,并没有影响 app.use(app.router); // <--- 这行会被移除 // 更多的中间件(在路由之后执行) app.use(function(req, res, next); // 处理错误的中间件 app.use(function(err, req, res, next) {}); app.get('/' ...); app.post(...);
app .use ( cookieParser ( ) ) ; app .use ( bodyParser ( ) ) ; / / / 其他的中间件,并没有影响 app .use ( app .router ) ; / / < -- - 这行会被移除 / / 更多的中间件(在路由之后执行) app .use ( function ( req , res , next ) ; / / 处理错误的中间件 app .use ( function ( err , req , res , next ) { } ) ; app .get ( '/' . . . ) ; app .post ( . . . ) ; |
express.createServer()
长期弃用。现在只要使用`express()’创建一个新的应用。
connect 中间件
除了 express.static
为了便捷性直接封装在 express 中,其他所有 connect 的中间件都被分离到了独立的模块中。由此,每个独立的模块都可以拥有自己的版本控制。
connect 的补丁
Connect 对 node 的原型进行了全局的改动。
这被认为是不正确的,所以在 Connect 3 中已被移除。
其中一些补丁是:
res.on('header')
res.charset
-
res.headerSent
– use node’sres.headersSent
instead
你不应该在任何 Connect 或 Express 的库中再使用这些。
res.charset
如果你想快速设置默认的字符集(你确实应该这么做),
使用 res.set('content-type')
或者 res.type()
来设置 header 。
当使用 res.setHeader()
时,默认的字符集将不会添加。
改动
app.use
app.use
现在可以接受 :params
.
Shell
app.use('/users/:user_id', function(req, res, next) { // req.params.user_id 可以正确获取 });
app .use ( '/users/:user_id' , function ( req , res , next ) { / / req .params .user_id 可以正确获取 } ) ; |
req.accepted()
使用 req.accepts()
来代替。
req.accepts()
req.acceptsEncodings()
req.acceptsCharsets()
req.acceptsLanguages()
都在内部使用 accepts 。
请参考 accepts
来提交问题或者查看文档。
请注意,这些属性可能已经从数组改为函数。
要把它们作为“数组”使用,只要不向它们传递任何参数即可。
例如, req.acceptsLanguages() // => ['en', 'es', 'fr']
.
res.location()
不再做相对路径的 URL 解析。浏览器自身将处理相对路径的 URL 。
app.route -> app.mountpath
当把一个 express 应用安装到另一个 express 应用中时。
配置改动
-
json spaces
在开发模式下不再默认启用。
req.params
现在它是一个对象而不是数组。如果你以前使用 req.params[##]
的形式,这不会破坏你的应用,它可以在不知道参数名的情况下,使用正则来处理路由。
res.locals
不再是一个函数。现在这是一个普通的JS对象。所以把它当作普通的对象来处理。
res.headerSent
改为 headersSent
来匹配 node.js 的 ServerResponse 对象。你的应用可能并没有使用到这个,因此它不会是一个问题。
req.is
现在在内部使用 type-is 。
请参考 type-is
来提交问题或者查看文档。
新加入
app.route(path)
返回一个新的 Route
的实例。当收到和这个路由的 path
相匹配的请求时,这个路由就会被调用。路由可以有自己的中间件和针对 HTTP 动作的方法来处理请求。
请参阅路由和路由线路文档,以便更好地了解如何在 express 中创建路由。
Router 和 Route 中间件
Router 已经全面改版,现在它是一个功能完善的中间件路由。Router 是在不牺牲参数匹配和中间件的情况下,将你的路由分离到多个文件或者模块的好方法。请参阅 Routes 及 路由文档 。
相关推荐
含热电联供的智能楼宇群协同能量管理策略:基于多主体协同与需求响应的热电混合运行策略研究,“基于Stackelberg博弈与需求响应的智能楼宇群热电协同能量管理策略”,MATLAB代码:含热电联供的智能楼宇群协同能量管理 关键词:楼宇能量管理系统;热电联供系统;Stackelberg博弈;需求响应 参考文档:《含热电联供的智能楼宇群协同能量管理》华北电力硕士lunwen 仿真平台:MATLAB 主要内容:本文提出了一种计及热电耦合需求响应的智能楼宇群的多主体协同能量管理策略。 传统热电联供系统采取单一的“以电定热”或“以热定电”运行策略,在实际运用中将无可避免地造成能源的浪费。 针对这一现状,本文采取“热电混合运行”策略对联供系统进行调控,在该运行策略下,运营商可以结合不同时段的价格信息、负荷水平等因素灵活采取使自身收益最大化的运行策略。 在热电协同能量管理层面,以楼宇群运营商的收益以及用户的效益最大化为目标,提出了智能楼宇群内部的优化定价策略,运营商在系统中负责向用户供电与供热,并自主制定电与热价格引导用户进行需求响应;其次,用户具有可平移电负荷以及可削减热负荷,可根据当前的价格信息自
随机规划下的虚拟电厂与微网双不确定性优化调度模型研究:基于MATLAB与CPLEX的仿真平台实现,计及双重不确定性的虚拟电厂微网日前随机优化调度策略——基于MATLAB与CPLEX平台的研究,MATLAB代码:计及源-荷双重不确定性的电厂 微网日前随机优化调度 关键词:电厂 微网 随机优化 随机调度 源-荷双重不确定性 电厂调度 参考文档:《Virtual power plant mid-term dispatch optimization》参考其燃气轮机、以及储能部分模型,另外随机优化算法也是和该文档一致; 仿真平台:MATLAB+CPLEX 主要内容:代码主要做的是一个电厂或者微网单元的日前优化调度模型,考虑了光伏出力和负荷功率的双重不确定性,采用随机规划法处理不确定性变量,构建了电厂随机优化调度模型。 具体来看,首先是基于蒙特卡洛算法,对预测的光伏以及负荷曲线进行场景生成,然后基于快概率距离快速消除法进行削减,直至削减至5个场景,然后采用随机调度的方法,对多场景下的电厂调度策略进行优化,程序实现效果良好,纯程序为本人亲自所写,一行一注释, ,关键词:虚拟电厂; 微网; 随
1、文件内容:rsyslog-mmaudit-8.24.0-57.el7_9.3.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/rsyslog-mmaudit-8.24.0-57.el7_9.3.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、更多资源/技术支持:公众号禅静编程坊
项目工程资源经过严格测试运行并且功能上ok,可实现复现复刻,拿到资料包后可实现复现出一样的项目,本人系统开发经验充足(全栈全领域),有任何使用问题欢迎随时与我联系,我会抽时间努力为您解惑,提供帮助 【资源内容】:包含源码+工程文件+说明等。答辩评审平均分达到96分,放心下载使用!可实现复现;设计报告也可借鉴此项目;该资源内项目代码都经过测试运行,功能ok 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 【提供帮助】:有任何使用上的问题欢迎随时与我联系,抽时间努力解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 下载后请首先打开说明文件(如有);整理时不同项目所包含资源内容不同;项目工程可实现复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用,资源为网络商品(电子资料类)基于网络商品和电子资料商品的性质和特征不支持退款,质量优质,放心下载使用
前端博客系统代码
18考试真题最近的t67.txt
项目工程资源经过严格测试运行并且功能上ok,可实现复现复刻,拿到资料包后可实现复现出一样的项目,本人系统开发经验充足(全栈全领域),有任何使用问题欢迎随时与我联系,我会抽时间努力为您解惑,提供帮助 【资源内容】:包含源码+工程文件+说明等。答辩评审平均分达到96分,放心下载使用!可实现复现;设计报告也可借鉴此项目;该资源内项目代码都经过测试运行,功能ok 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 【提供帮助】:有任何使用上的问题欢迎随时与我联系,抽时间努力解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 下载后请首先打开说明文件(如有);整理时不同项目所包含资源内容不同;项目工程可实现复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用,资源为网络商品(电子资料类)基于网络商品和电子资料商品的性质和特征不支持退款,质量优质,放心下载使用
基于Plecs的模块化多电平换流器设计:PMW调制下的小输出电压纹波半桥子模块实现,基于Plecs实现的模块化多电平半桥换流器,采用PWM调制方式实现低电压纹波输出,用plecs实现的模块化多电平流器,调制方式是PMW,输出电压纹波小,子模块是半桥 ,关键词提取结果:plecs;模块化多电平换流器;PWM调制;输出电压纹波小;半桥子模块;,《Plecs模拟模块化半桥式PWM多电平换流器》——输出低纹波电压的研究与应用
## 01、数据简介 股票流动性是指股票在市场上被买卖的容易程度和速度,即投资者能够在不造成显著价格变动的情况下迅速买卖股票的能力。 Amihud指标结果这是一个衡量股票流动性的指标,为股票在一段时间的收益率与交易额的比值的负对数值。如果股票交易量的变动会带来股价的剧烈波动(暴涨暴跌),则Amihud指标越大,股票流动性越差;反之,如果交易量的变化对股价变化的影响越小,则说明股票的流动性较好。由于这是一个计算结果,因此需要根据实际的股票交易数据来计算。 数据名称:上市公司-股票流动性指标 数据年份:2000-2023年 ## 02、相关数据 stkcd、年份、证券代码、Amihud指标结果、交易天数。
Simulink在DSP2833x开发板上的电机控制与通讯模型自动生成代码教程,Simulink在DSP2833x开发板上的电机控制与通讯模型自动生成代码教程,模型开发域控制Simulik自动生成代码 DSP2833x基于模型的电机控制设计 MATLAb Simulik自动生成代码 基于dsp2833x 底层驱动库的自动代码生成 MATLAB Simulink仿真及代码生成技术入门教程 内容为Simulink在嵌入式领域的应用,具体是Simulink在DSP28335这块开发版上的应用模型:包括直流电机、PMSM、步进电机控制模型,还有常见的LED、串口、CAN等通讯相关Simulink模型,模型都有相关解释文件。 ,核心关键词: Simulink应用; DSP2833x开发版; 电机控制模型; 直流电机模型; PMSM模型; 步进电机模型; LED模型; 串口模型; CAN通讯模型; 自动代码生成; 底层驱动库。,MATLAB Simulink在DSP2833x上的嵌入式开发:自动生成代码的模型应用与实践教程
19考试真题最近的t24.txt
protues8.17安装包,无须积分,即可下载
计及电动汽车灵活性的微网三阶段多时间尺度协调调度模型:优化经济调度、实时调整与减少功率波动策略,计及电动汽车灵活性的微网多时间尺度经济协调调度模型,计及电动汽车灵活性的微网多时间尺度协调调度模型 摘要:构建了含有电动汽车参与的微网 电厂多时间尺度协调优化模型,其中包括日前-日内-实时三阶段,日前阶段由于风光出力具有不确定性,结合风光预测值作初步经济调度;日内阶段,风光出力观测的更加准确,通过调节储能、需求响应等单元对调度方案作进一步调整,避免遭受高额的不平衡惩罚;实时阶段,风光出力的预测结果更准确,为了进一步降低微网与上级电网并网功率的波动性,充分利用电动汽车的灵活性,调度电动汽车的充放电以减少功率波动,兼顾调度的安全性与经济性。 ,微网协调调度模型; 电动汽车灵活性; 多时间尺度; 风光出力; 储能需求响应; 实时调整; 经济性,电动汽车灵活性的微网多尺度协调调度模型研究
基于MPC的电动汽车分布式协同自适应巡航控制:上下分层控制与仿真结果展示,基于MPC的电动汽车协同自适应巡航控制:上下分层控制与仿真结果展示,基于MPC的分布式电动汽车协同自适应巡航控制,采用上下分层控制方式,上层控制器采用模型预测控制mpc方式,产生期望的加速度,下层根据期望的加速度分配扭矩;仿真结果良好,能够实现前车在加减速情况下,规划期望的跟车距离,产生期望的加速度进行自适应巡航控制。 ,关键词:MPC(模型预测控制); 分布式电动汽车; 协同自适应巡航控制; 上下分层控制方式; 期望加速度; 扭矩分配; 仿真结果良好; 前车加减速; 跟车距离。,基于MPC的分层控制电动汽车自适应巡航系统,仿真实现前车加减速跟车距离自适应
MATLAB代码实现电-气-热综合能源系统耦合优化调度模型:精细注释与实用模块子程序,MATLAB实现电-气-热综合能源系统优化调度的精细化建模与求解策略利用电网、热网与气网耦合交互的复杂系统特性进行深度调度分析,MATLAB代码:电-气-热综合能源系统耦合优化调度 关键词:综合能源系统 优化调度 电气热耦合 参考文档:自编文档,非常细致详细,可联系我查阅 仿真平台:MATLAB YALMIP+cplex gurobi 主要内容:代码主要做的是一个考虑电网、热网以及气网耦合调度的综合能源系统优化调度模型,考虑了电网与气网,电网与热网的耦合,算例系统中,电网部分为10机39节点的综合能源系统,气网部分为比利时20节点的配气网络,潮流部分电网是用了直流潮流,气网部分也进行了线性化的操作处理,代码质量非常高,保姆级的注释以及人性化的模块子程序,所有数据均有可靠来源 ,关键词:综合能源系统; 优化调度; 电气热耦合; 10机39节点; 比利时20节点; 直流潮流; 线性化处理; MATLAB YALMIP; cplex gurobi。,MATLAB代码:电-气-热综合能源系统耦合优化调度
报告电子元器件手册目录,常见电子元器件的参考资料以及70种电子元器件封装等等,非常适合初学者进行学习和掌握。希望大家都能够在电子领域进行深耕。
19考试真题最近的t63.txt
基于MATLAB Simulink开发的FCU与PEMFC燃料电池系统模型开发:空压机、电堆等模块仿真与控制策略开发,基于MATLAB Simulink开发的PEMFC燃料电池系统模型及控制策略仿真开发资料,fcu,燃料电池控制器,质子交膜燃料电池系统模型(PEMFC),基于MATLAB simulink开发,主要部分有空压机模型,供气系统模型(阴极和阳极),背压阀模型,电堆模型等。 可进行控制策略等仿真开发工作。 提供相关文档学习建模资料等 ,fcu; 燃料电池控制器; PEMFC; MATLAB simulink; 空压机模型; 供气系统模型; 背压阀模型; 电堆模型; 控制策略仿真; 文档学习建模资料,基于MATLAB Simulink的PEMFC燃料电池控制器开发:模型构建与控制策略仿真
上门预约服务小程序v4.10.9+前端 文章列表单图时,图标统一左侧对齐 文章内增加视频位置,显示在文章顶部 文章内底部导航增加首页、分享、自定义按钮,可跳转内部页面、其他小程序、业务域名内的H5页面,方便宣传使用
19考试真题最近的t41.txt