Azure NodeJS错误:ENOENT,打开"D:\ home \ site \ wwwroot \ bin \ views \" [英] Azure NodeJS Error: ENOENT, open 'D:\home\site\wwwroot\bin\views\'

查看:54
本文介绍了Azure NodeJS错误:ENOENT,打开"D:\ home \ site \ wwwroot \ bin \ views \"的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我一直试图将Node应用程序部署到Azure,但是遇到了问题.我认为我知道问题的根源,但不确定如何更改配置以解决此问题.

I have been trying to deploy a Node application to Azure, but am running into a problem. I think that I know the source of the problem, but am not sure how to change the config to fix it.

由于某种原因,我的节点进程正在寻找使用D:\ home \ site \ wwwroot \ bin作为查找脚本文件和视图的路径,而不是寻找D:\ home \ site \ wwwroot.

For some reason, my node process is looking to use D:\home\site\wwwroot\bin as the path to look for script files and views instead of looking at D:\home\site\wwwroot.

我收到错误消息:错误:ENOENT,打开'D:\ home \ site \ wwwroot \ bin \ views \ layouts \ layout.hbs'在stacktrace上,这意味着我的app.js被调用,但是它在错误的位置查找视图.

I get the error: Error: ENOENT, open 'D:\home\site\wwwroot\bin\views\layouts\layout.hbs' on the stacktrace, which means that my app.js is being called, but it is looking in the wrong place for the views.

我如何告诉azure再上一个目录查找布局,而不是使用bin作为默认目录?附件是我的VM上该站点的目录结构.

How do I tell azure to go up one more directory to look for the layouts instead of using bin as the default? Attached is the directory structure on my VM for the site.

/站点

Mode                LastWriteTime     Length Name                              
----                -------------     ------ ----                              
d----          2/9/2015   6:27 PM            bin                               
d----          2/9/2015   6:27 PM            controllers                       
d----          2/9/2015   6:27 PM            models                            
d----          2/9/2015   6:27 PM            node_modules                      
d----          2/9/2015   6:27 PM            public                            
d----          2/9/2015   6:28 PM            tests                             
d----          2/9/2015   6:28 PM            views                             
-a---          2/9/2015   6:38 PM       2448 app.js                            
-a---          2/7/2015   1:17 AM        634 config.js                         
-a---          2/9/2015   6:25 PM     202392 hostingstart.html                 
-a---          2/7/2015   1:40 AM        597 package.json                      
-a---          2/5/2015   9:37 PM         22 README.md                         
-a---          2/7/2015   1:18 AM       1236 routes.js                         
-a---          2/7/2015   1:49 AM       1801 Web.config                        
-a---          2/5/2015   9:37 PM       1671 Web.Debug.config  

站点/bin

Mode                LastWriteTime     Length Name                              
----                -------------     ------ ----                              
-a---        10/21/2014  11:29 PM        629 ChangeConfig.ps1                  
-a---        10/21/2014  11:29 PM       2141 download.ps1                      
-a---         1/10/2015  12:46 AM      24256 Microsoft.NodejsTools.WebRole.dll 
-a---        10/21/2014  11:29 PM         17 node.cmd                          
-a---        10/21/2014  11:29 PM       1819 setup_web.cmd                     
-a---          2/5/2015   9:37 PM        272 www        

www

#!/usr/bin/env node
var debug = require('debug')('ExpressApp3');
var app = require('../app');

app.set('port', process.env.PORT || 3000);

var server = app.listen(app.get('port'), function() {
    debug('Express server listening on port ' + server.address().port);
});

app.js

//...
var handlebars = require('express-handlebars').create(config.handlebars);
app.set('views', path.join(__dirname, 'views'));
app.engine('.hbs', handlebars.engine);
app.set('view engine', '.hbs');

app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(require('stylus').middleware(path.join(__dirname, 'public')));
app.use(express.static(path.join(__dirname, 'public')));

web.config

<?xml version="1.0" encoding="utf-8"?>
<!--
  For more information on how to configure your Node.js application, please visit
  http://go.microsoft.com/fwlink/?LinkId=290972
  -->
<configuration>
  <appSettings>
    <!--
    <add key="StorageAccountName" value="" />
    <add key="StorageAccountKey" value="" />
    <add key="ServiceBusNamespace" value="" />
    <add key="ServiceBusIssuerName" value="" />
    <add key="ServiceBusIssuerSecretKey" value="" />
    -->
  </appSettings>
  <system.webServer>
    <!-- mimeMap enables IIS to serve particular file types as specified by fileExtension. -->
    <staticContent>
      <mimeMap fileExtension=".svg" mimeType="image/svg+xml" />
    </staticContent>

    <modules runAllManagedModulesForAllRequests="false" />

    <!-- Web.Debug.config adds attributes to this to enable remote debugging when publishing in Debug configuration. -->
    <iisnode watchedFiles="web.config;*.js;routes\*.js;views\*.jade"/>

    <!-- indicates that the server.js file is a Node.js application 
    to be handled by the iisnode module -->
    <handlers>
      <add name="iisnode" path="/bin/www" verb="*" modules="iisnode" />
    </handlers>

    <security>
      <requestFiltering>
        <hiddenSegments>
          <remove segment="bin" />
        </hiddenSegments>
      </requestFiltering>
    </security>

    <rewrite>
      <rules>
        <clear />
        <rule name="app" enabled="true" patternSyntax="ECMAScript" stopProcessing="true">
          <match url="iisnode.+" negate="true" />
          <conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
          <action type="Rewrite" url="bin\www" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
</configuration>

推荐答案

我今天也遇到了这个问题.我是Node的新手,所以我不确定这是否是最好的方法,但这对我有用.

I just ran into this issue today as well. I'm new to node, so I'm not sure if this is the best approach but this worked for me.

我在app.js的开头添加了此内容

I added this early in app.js

process.chdir(path.join(process.cwd(), '..'));

这篇关于Azure NodeJS错误:ENOENT,打开"D:\ home \ site \ wwwroot \ bin \ views \"的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆