![](/img/trans.png)
[英]Plesk Obsidian, IISNode and Express problem - application only works locally
[英]iisnode and express
我確定這個問題已被問了一百萬次,但我還沒有找到解決以下問題的方法。
我有一個使用nodejs和express運行的基本應用程序。 當我在節點中運行應用程序時,它默認將我發送到我公共文件夾中的index.html。 即使我沒有設置任何路線。 我希望這發生。
我安裝了iisnode並在'Default Website'下創建了一個名為'Devices'的新應用程序。 我把我的申請保持不變。 閱讀我需要用web.config排序一些東西,並決定使用這里提到的配置(而不是yaml):
http://tomasz.janczuk.org/2012/05/yaml-configuration-support-in-iisnode.html
當我嘗試在瀏覽器中加載應用程序時,它總是嘗試在我的app.js中找到路徑並向我發送消息,例如:
無法獲取/設備/
我真的用這個把頭發拉出來,不知道該做什么! 我是否必須在app.js入口點內為靜態內容設置默認路由? 我有以下內容:
app.configure(function(){
app.set('port', process.env.PORT || 3000);
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(app.router);
app.use(express.static(path.join(__dirname, 'public')));
});
但是當我從它的根加載應用程序時,它仍然沒有把我交給index.html:
的 'http://本地主機/設備/'
有人能幫我解決這個問題嗎?
解決此問題的最簡單方法是為您的應用程序創建專用的IIS網站,而不是像在IIS網站中那樣創建IIS應用程序。
如果您在IIS中有node.js應用程序的專用網站,則可以在URL空間的根目錄訪問該應用程序,例如http://myapp.com/
,這是默認的快速路由配置所期望的。 相反,如果您在IIS網站中創建IIS應用程序來托管您的node.js應用程序(比如devices
),則可以從該網站的根URL下屬的URL訪問它,例如http://myapp.com/devices/
。 額外的URL路徑段( devices
)是您的快速應用程序不期望並且未配置為處理的內容,因此它拒絕該請求。
如果您堅持將node.js應用程序作為IIS中的IIS應用程序托管,則需要擴充快速路由配置以期望與IIS應用程序名稱匹配的額外URL路徑段。
可以在以下位置找到一個好的建議: iisnode托管的Web應用程序是否可以在其托管的虛擬路徑上運行? 實質上,您使用一個小變量來抽象路徑和一個環境變量(如果它存在)來控制它。 另一個好帖子(可能更好的解決方案)可以在https://github.com/tjanczuk/iisnode/issues/160找到
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.