crossplatform---Nodejs in Visual Studio Code 10.IISNode
1.开始
Nodejs in Visual Studio Code 08.IIS : http://www.cnblogs.com/mengkzhaoyun/p/5410185.html
参考此篇内容,部署一个iisnode示例
2.将Node.js Express框架示例程序部署在IISNode中
- 创建一个Express示例程序
|
1
2
3
4
5
6
7
8
9
10
11
|
$ cd D:\Libraries\Documents\Visual Studio Code$ express myapp create : myappcreate : myapp/package.json...... install dependencies:> cd myapp && npm installrun the app:> SET DEBUG=myapp:* & npm start |

- 在IIS中创建一个myapp的目录发布此node程序
- 应用程序池:DefaultAppPool(IIS默认的,.Net 集成)

- 创建Web.config文件至myapp目录
- 注意上图,Node Express的启动程序是bin/www文件
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
<configuration> <system.webServer> <!-- bin/www 是Express示例默认的启动程序 --> <handlers> <add name="iisnode" path="bin/www" verb="*" modules="iisnode" /> </handlers> <rewrite> <rules> <rule name="myapp"> <match url="/*" /> <action type="Rewrite" url="bin/www" /> </rule> </rules> </rewrite> </system.webServer></configuration> |
- 此时在浏览器中打开地址http://localhost/myapp/,将出现404错误
- 原因是bin目录是默认输出目录,默认不允许模块调用
|
1
2
3
|
HTTP 错误 404.8 - Not Found请求筛选模块被配置为拒绝包含 hiddenSegment 节的 URL 中的路径。 |
- myapp目录下,新建一个index.js,尝试解决此问题
将bin/www代码剪切过来,并删除bin/www,修改Web.config中的入口程序为index.js
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
<configuration> <system.webServer> <!-- index.js 是myapp的启动程序 --> <handlers> <add name="iisnode" path="index.js" verb="*" modules="iisnode" /> </handlers> <rewrite> <rules> <rule name="myapp"> <match url="/*" /> <action type="Rewrite" url="index.js" /> </rule> </rules> </rewrite> </system.webServer></configuration> |
- 此时重新浏览http://localhost/myapp/,出现运行时错误
- 这个运行时错误表示node在执行index.js过程中出错,是个相对地址写错了的问题,node终于执行了,不容易啊,可能因为我将bin/www硬Copy过来忘记修正相对目录了。。
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
iisnode encountered an error when processing the request.HRESULT: 0x2HTTP status: 500HTTP subStatus: 1002HTTP reason: Internal Server ErrorYou are receiving this HTTP 200 response because system.webServer/iisnode/@devErrorsEnabled configuration setting is 'true'.In addition to the log of stdout and stderr of the node.exe process, consider using debugging and ETW traces to further diagnose the problem.The last 64k of the output generated by the node.exe process to stderr is shown below:Application has thrown an uncaught exception and is terminated:Error: Cannot find module '../app' at Function.Module._resolveFilename (module.js:325:15) at Function.Module._load (module.js:276:25) at Module.require (module.js:353:17) at require (internal/module.js:12:17) at Object.<anonymous> (D:\Libraries\Documents\Visual Studio Code\myapp\index.js:7:11) at Module._compile (module.js:409:26) at Object.Module._extensions..js (module.js:416:10) at Module.load (module.js:343:32) at Function.Module._load (module.js:300:12) at Module.require (module.js:353:17) |
- 修改index.js
- ../app改成./app就少了个点,看出来了么
|
1
2
3
|
var app = require('./app');var debug = require('debug')('myapp:server');var http = require('http'); |
- 再访问,出现错误Cannot find module 'serve-favicon' ,粗心忘记NPM INSTALL了。。。
- 执行CMD命令 npm install为myapp安装依赖包
- 重新访问网页http://localhost/myapp/,出现404 Not Found
- 虚拟路径错误,需要在app.js中修改虚拟路径
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
Not Found404Error: Not Found at D:\Libraries\Documents\Visual Studio Code\myapp\app.js:30:13 at Layer.handle [as handle_request] (D:\Libraries\Documents\Visual Studio Code\myapp\node_modules\express\lib\router\layer.js:95:5) at trim_prefix (D:\Libraries\Documents\Visual Studio Code\myapp\node_modules\express\lib\router\index.js:312:13) at D:\Libraries\Documents\Visual Studio Code\myapp\node_modules\express\lib\router\index.js:280:7 at Function.process_params (D:\Libraries\Documents\Visual Studio Code\myapp\node_modules\express\lib\router\index.js:330:12) at next (D:\Libraries\Documents\Visual Studio Code\myapp\node_modules\express\lib\router\index.js:271:10) at D:\Libraries\Documents\Visual Studio Code\myapp\node_modules\express\lib\router\index.js:618:15 at next (D:\Libraries\Documents\Visual Studio Code\myapp\node_modules\express\lib\router\index.js:256:14) at Function.handle (D:\Libraries\Documents\Visual Studio Code\myapp\node_modules\express\lib\router\index.js:176:3) at router (D:\Libraries\Documents\Visual Studio Code\myapp\node_modules\express\lib\router\index.js:46:12) |
- 修改app.js,注意发布路径是myapp,终于看到了Welcome to Express不容易啊,别忘了改public目录的路径
|
1
2
3
4
|
app.use('/myapp',express.static(path.join(__dirname, 'public')));app.use('/myapp', routes);app.use('/myapp/users', users); |
- 修改views/layout.jade,注意有个相对CSS相对路径,去掉最前的斜杠
|
1
2
3
4
5
6
7
|
doctype htmlhtml head title= title link(rel='stylesheet', href='stylesheets/style.css') body block content |


- 在Chrome中打开http://localhost/myapp/index.js/debug远程调试,出现错误,还是图样啊
- 看来这个index.js/debug这个连接被app执行了...
- 到目前为止,所有错误完全无法调试,全靠我经(wo)验(shi)丰(cai)富(de)

- 出现上面错误的原因是UrlRewriter配置
将所有myapp下的执行请求都交给index.js去执行了,显然myapp/index.js/debug这个地址不应该给index.js去执行。
修改web.config中的url rewriter节,将index.js/debug这个地址设置成不匹配negate="true"。
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
<configuration> <system.webServer> <!-- index.js 是myapp的启动程序 --> <handlers> <add name="iisnode" path="index.js" verb="*" modules="iisnode" /> </handlers> <rewrite> <rules> <rule name="myapp"> <match url="index.js/debug" negate="true" /> <action type="Rewrite" url="index.js" /> </rule> </rules> </rewrite> </system.webServer></configuration> |

- 终于见到Node Inspector了,在浏览器中输入http://localhost/myapp/users,Node Inspector将捕获这个处理

3.总结
iisnode各种叼,支持发布后跨平台远程调试,如果发布过程中遇到问题怎么办呢,iisnode发布5年了(目前是0.2.*版本),应该积累了不少issues了,一篇篇翻看,或者去问作者解决吧。
示例代码,请前往:https://github.com/Mengkzhaoyun/nodepractise
04.iisNode&myApp
http://www.cnblogs.com/mengkzhaoyun/p/5414501.html
crossplatform---Nodejs in Visual Studio Code 10.IISNode的更多相关文章
- Nodejs in Visual Studio Code 10.IISNode
1.开始 Nodejs in Visual Studio Code 08.IIS : http://www.cnblogs.com/mengkzhaoyun/p/5410185.html 参考此篇内容 ...
- Nodejs in Visual Studio Code 14.IISNode与IIS7.x
1.开始 部署IISNode环境请参考:Nodejs in Visual Studio Code 08.IIS 部署Nodejs程序请参考:Nodejs in Visual Studio Code 1 ...
- Nodejs in Visual Studio Code 11.前端工程优化
1.开始 随着互联网技术的发展,企业应用里到处都是B/S设计,我有幸经历了很多项目有Asp.Net的,有Html/js的,有Silverlight的,有Flex的.很遗憾这些项目很少关注前端优化的问题 ...
- Nodejs in Visual Studio Code 04.Swig模版
1.开始 设置Node_Global:npm config set prefix "C:\Program Files\nodejs" Express组件:npm install e ...
- Nodejs in Visual Studio Code 01.简单介绍Nodejs
1.开始 作者自己:开发人员,Asp.Net , html / js , restful , memcached , oracle ,windows , iis 目标读者:供自己以后回顾 2.我看No ...
- Nodejs in Visual Studio Code 07.学习Oracle
1.开始 Node.js:https://nodejs.org OracleDB: https://github.com/oracle/node-oracledb/blob/master/INSTAL ...
- Nodejs in Visual Studio Code 09.企业网与CNPM
1.开始 CNPM : https://npm.taobao.org/ 2.企业网HTTP代理上网 平时办公在一个大企业网(10.*.*.*)中,使用HTTP代理上网,发现npm命令无法执行. 解决方 ...
- Nodejs in Visual Studio Code 08.IIS
1.开始 本文部分内容均转载自文章: http://www.hanselman.com/blog/InstallingAndRunningNodejsApplicationsWithinIISOnWi ...
- Nodejs in Visual Studio Code 06.新建Module
1.开始 Node.js:https://nodejs.org 2.Moudle js编程中,由于大家可以直接在全局作用域中编写代码,使开发人员可以很容易的新建一个全局变量或这全局模块,这些全局变量或 ...
随机推荐
- java 封装httpclient 的get 和post 请求
import java.io.ByteArrayOutputStream; import java.io.UnsupportedEncodingException; import java.util. ...
- /etc/hosts文件设置不对导致Jboss启动失败
Caused by: javax.management.MBeanRegistrationException: preRegister() failed: [ObjectName='jboss.rem ...
- (十二) 一起学 Unix 环境高级编程 (APUE) 之 进程间通信(IPC)
. . . . . 目录 (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO (三) 一起学 Unix 环境高级编 ...
- CF(协同过滤算法)
1 集体智慧和协同过滤 1.1 什么是集体智慧(社会计算)? 集体智慧 (Collective Intelligence) 并不是 Web2.0 时代特有的,只是在 Web2.0 时代,大家在 Web ...
- Android之activity中新建控件
了解了5大布局,我们会发现这些布局都是静态的,如何让系统自动生成控件呢?这就需要activity来帮忙了 今天我们讲的就是用activity新建布局 用案例来说吧! 实现一个输入行和列自动生成表格并生 ...
- MySQL中如何插入反斜杠,反斜杠被吃掉,反斜杠转义
问题描述:mysql中带有反斜杠的内容入库后,发现反斜杠无故失踪了(俗话说被吃掉了) 例:插入insert into tb('url') values('absc\eeee'); 结果数据库里的内容是 ...
- iOS项目中常用的第三方开源库
1.项目使用的第三方开源库 项目使用了CocoaPods(类似java中的maven)管理常用的第三方库,一些特殊的单独引用,下面介绍下比较好用的几个. (1)AFNetworking 目前比较推荐的 ...
- java基础-java核心知识库
本人从事java开发6年左右,主要从事互联网相关的开发,目前还是奋战在一线的码农,痛并快乐着.受互联网产品热潮的影响,关注高性能低成本架构,互联网开发框架,以下是我认为作为一个资深java程序员应该掌 ...
- 解决: Can’t connect to local MySQL server through socket /var/lib/mysql/mysql.sock
今天在搬瓦工上使用mysql 命令行,总报一个这样的错:Can't connect to local MySQL server through socket '/xxxxx/mysql.sock',一 ...
- php session的存放目录,再次回顾
session的存放位置可以通过运行时配置ini_set和函数session_save_path来设置 .session_save_path - 读取/设置当前会话的保存路径 string sessi ...