2014-11-09 74 views
0

我的应用程序的NodeJitsu文件夹结构如下(即,当我做一个jitsu deploy时,我在包含“server.js” - 即,“服务器”文件夹)。NodeJitsu错误:错误:ENOENT,stat'/ opt/run/snapshot/

Root server 
     |___server.js 
     |___package.json 
     client 
     |___www 
      |___index.html 
       |___css 
       |___js 
       |___etc. 

所以根文件夹是“server”,包含启动脚本“server.js”。然后有一个名为“客户端”的文件夹,与“服务器”平行,其中有一个名为“www”的文件夹,在“www”内是主要的“index.html”。

在我的“server.js”的文件,我有以下代码:

app.get(‘/’, function(req,res) 
{ 
    var aPath = path.resolve(“../client/www/”, “index.html”); 
    res.sendFile(aPath); 
}); 

我没有app.use(express.static(__dirname + '/somefolder')。当我启动应用程序,我得到这个错误:

Error: ENOENT, stat '/opt/run/snapshot/client/www/index.html' 

process.cwd()/opt/run/snapshot/package。显然上面的路径并不指向“index.html”所在的位置。但我认为我做path.resolve(…)的方式应该指向“index.html”。我看不出问题在哪里。如果“server.js”在根目录中,那么要到“client/www/index.html”中的“index.html”,那么我需要写“../client/www”,相对的转到脚本,去“index.html”,对吧?

您对路径设置不正确有什么见解吗? /opt/run/snapshot/应该指向什么?或者,我需要在get(‘/’)处理程序中做出哪些更改才能正确指向我的“index.html”?

编辑

我画了不正确的文件夹结构。现在它是正确的。

我也关掉了app.get()并打开了app.use(express.static(__dirname + '/../client/www/')。但无济于事:现在我得到一个Cannot GET /错误。

我最终要做的是让“server.js”文件成为节点服务器,它主要是为浏览器提供AngularJS HTML文件,以及来自“客户端”的附带图片,样式表等“文件夹。这是服务器的主要角色,它还具有验证应用程序用户的额外作用,并使用非常好的Satellizer模块。就是这样。我附有一个MongoDB,但除此之外,这是一个非常常见和直接的Node.js服务器应用程序。

谢谢!

+1

它在本地工作吗?你的客户和WWW都在大写,确保它不是个案。 – laggingreflex 2014-11-09 08:25:29

回答

1

尝试没有生根,解决和注销仔细检查:

// notice no leading/which is root. __dirname should be the dir of current file running 
var staticPath = path.resolve(__dirname, '../client/www'); 
console.log(staticPath); 

然后传递到express.static

app.use(express.static(staticPath); 

我可能会建议您按照布局和快递产生的惯例应用程序在根目录下的应用程序和公开的静态文件

/public 
    <static files> 
app.js 

然后做生成的应用程序:

app.use(express.static(path.join(__dirname, 'public'))); 
+0

好的,谢谢,bryanmac;我会尝试你的建议。欣赏它! – Lew 2014-11-09 14:44:15

+0

经过这些更改后,__dirname是“/ opt/run/snapshot/package”,并且在创建staticPath时,新路径变为staticPath ='/ opt/run/snapshot/client/www',但我认为它应该是staticPath ='/ opt/run/snapshot/package/client/www'。 但它工作!所以,非常感谢。欣赏你的时间。 – Lew 2014-11-09 14:57:19

+0

完成。再次感谢! – Lew 2014-11-09 21:34:07