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 及 路由文档 。
相关推荐
在本教程中,我们将探索如何使用Node.js搭建一个博客系统,这是系列的第一部分,主要涉及Node.js的安装以及Express框架的基础知识。Node.js是一个开放源码、跨平台的JavaScript运行环境,它允许开发者在服务器端运行...
基于node.js、vue、mongodb等技术构建的web系统,界面美观,功能齐全,适合用作毕业设计、课程设计作业等,项目均经过测试,可快速部署运行! 基于node.js、vue、mongodb等技术构建的web系统,界面美观,功能齐全,...
在实际项目中,我们首先会设置Node.js环境,安装Express和必要的中间件。接着,创建路由来处理HTTP请求,例如GET请求用于获取文章列表,POST请求用于提交新文章。同时,我们会使用Express的视图系统结合EJS模板引擎...
基于node.js、vue、mongodb等技术构建的web系统,界面美观,功能齐全,适合用作毕业设计、课程设计作业等,项目均经过测试,可快速部署运行! 基于node.js、vue、mongodb等技术构建的web系统,界面美观,功能齐全,...
Node.js 安装指南 Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,使用事件驱动、非阻塞式 I/O 模型,使其轻量又高效。Node.js 的包管理器 npm,是全球最大的开源库生态系统。在本指南中,我们将详细...
在Node.js和Express的环境中,我们首先需要安装`mysql2`库来连接MySQL数据库。创建一个数据库连接,并使用SQL语句执行增、删、改、查操作。例如,我们可以创建一个`User`表,然后编写以下方法: - **创建(Create)**...
使用React作为前端框架,Node.js(Express)作为后端框架来搭建一个前后端分离的系统.zip 使用React作为前端框架,Node.js(Express)作为后端框架来搭建一个前后端分离的系统.zip 使用React作为前端框架,Node.js...
在Node.js环境中,Express框架是开发Web应用的常用选择,其中`express.static`中间件是用于托管静态资源的关键组件。这个中间件允许我们方便地提供HTML、CSS、JavaScript以及图片等静态文件给客户端浏览器,从而实现...
在你的项目根目录下,使用npm(Node.js的包管理器)安装Express和Socket.IO: ```bash npm init -y npm install express socket.io ``` ### 2. 创建Express服务器 在项目中创建一个`server.js`文件,初始化...
**Node.js与Express基础知识** Node.js是一个基于Chrome V8引擎的JavaScript运行环境,它让JavaScript能够在服务器端执行,打破了JavaScript只能在浏览器端使用的限制。Node.js具有非阻塞I/O模型,使其在处理高并发...
标题中的“Node.js-mongo-express-基于Web的MongoDB管理界面采用Node.js和express开发”揭示了我们讨论的主题:一个使用Node.js和Express框架构建的MongoDB Web管理界面,名为“mongo-express”。这个工具提供了图形...
在本项目中,"vue+node.js+express+mysql最简单的列表管理" 是一个全栈Web应用程序的示例,旨在帮助初学者理解如何将这四种技术整合在一起构建一个功能简单的应用。下面,我们将深入探讨这些技术及其在项目中的作用...
【标题】:“Node.js+express快速入门1” 【描述】:本内容主要介绍了Node.js的基础概念,强调了其异步非阻塞I/O特性和高并发能力,对比了与PHP的差异,以及如何使用Node.js构建HTTP服务器。同时提到了Express框架...
标题中的“Node.js-基于node.JS(Express)Socket.IO的同屏展示程序”表明这是一个使用Node.js构建的项目,具体来说,它依赖于Express框架和Socket.IO库来实现同屏展示的功能。让我们深入探讨一下这些关键概念以及它们...
7. **安装和运行**:要运行这样的项目,首先需要全局安装 Node.js,然后在项目根目录下执行 `npm init` 创建 `package.json`,接着安装 Express 和其他依赖(如 body-parser),使用 `npm install express body-...
Express.js作为Node.js中最流行的Web应用框架,提供了丰富的扩展性,让我们能够轻松定制自己的访问日志记录器。"Node.js-基于express的访问日志记录器"项目就是这样一个实现,它专注于在Express应用中记录HTTP请求的...
本源码项目是基于Node.js和Express的MySQL数据库操作设计,包含23个文件,主要使用JavaScript编程语言。该项目展示了如何使用Express框架连接MySQL数据库,并进行基本的CRUD(创建、读取、更新、删除)操作。系统...