2016-01-24 59 views
2

我有一個讓iisnode和ghost一起玩的問題。在IIS中使用Iisnode運行Ghost

我可以運行iisnode提供的示例,我可以通過節點命令行運行良好並正常運行。我已經在網上寫過每篇博客文章,我可以找到他們一起建立起來。令人沮喪的是博客使這個過程看起來非常簡單。

從查看「ETW」日誌看來,它看起來像iisnode無法與使用命名管道的節點進程進行通信(「iisnode調度了與node.exe進程的命名管道連接的重試」x20 +),然後節點進程終止。

這個問題可能並不存在鬼,tbh我無法解決下一步該做什麼或調整哪個部分。在這一點上,我最好的猜測是某種權限問題,但我花了幾個小時在整個開發機器上設置權限無濟於事。

如果有幫助,我在瀏覽器中返回的錯誤消息是:錯誤:(代碼:EACCES)啓動服務器時出錯。

回答

3

爲了回答我自己的問題,我檢查了node.exe的Process Monitor輸出,逐行檢查是否可以看到任何奇怪的東西。我不是專家在分析從進程監視器輸出,並有「緩衝區溢出」的消息和其他的東西,可能錯誤的每噸,但後來我偶然發現以下行絆倒:

Node.exe CreatePipe \MyProjects\WebsiteName\process.env.port\ INVALIDDEVICEREQUEST 

設備無效?

然後便士終於下降了。在config.js中,您不想將端口設置爲'process.env.port'(如在config.js文件本身中建議的註釋),您要將端口設置爲process.env.port

不含引號。

+1

哇@ ruethewhirl551你救了我的命。我也遇到了這個錯誤。謝謝。 – Qsprec

1

只是爲了澄清what ruethewhirl551 said,這裏是從我的工作 「config.js」 的摘錄:

config = { 
    production: { 
     url: 'http://my-blog.com', 
     mail: { 
      transport: 'SMTP', 
      options: { 
       service: 'Mailgun', 
       auth: { 
        user: '[email protected]', 
        pass: '9ed512da012cd454376947365xd71793' 
       } 
      } 
     }, 
     database: { 
      client: 'sqlite3', 
      connection: { 
       filename: path.join(__dirname, '/content/data/ghost.db') 
      }, 
      debug: false 
     }, 

     server: { 
      host: '127.0.0.1', 
      port: process.env.PORT // <-- HERE 
     } 
    }, 

    // ... 

請注意底部的線port: process.env.PORT

您還可以通過「config.example.js」文件搜索「iisnode」以獲取更多信息。