NodeJitsu错误:错误:ENOENT,stat' / opt / run / snapshot /

时间:2014-11-09 07:44:49

标签: node.js express nodejitsu

我的应用程序NodeJitsu的文件夹结构如下(即,当我执行jitsu deploy时,我在包含“server.js”的文件夹中 - 即“server”文件夹)。

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

所以在根目录是文件夹“server”,包含起始脚本“server.js”。然后是一个名为“client”的文件夹,与“server”平行,其中一个名为“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”在根目录中,那么要进入“index.html”,这是在“client / www / 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”文件作为Node服务器,该服务器主要只是向浏览器提供AngularJS HTML文件,以及来自“客户端”的伴随图像,样式表等。夹。这是服务器的主要角色,还有一个额外的角色,即使用非常好的Satellizer模块对应用程序的用户进行身份验证。就是这样。我附加了MongoDB,但除此之外,这是一个非常常见且简单的Node.js服务器应用。

谢谢!

1 个答案:

答案 0 :(得分:1)

尝试不使用root,解析并注销以进行双重检查:

// 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);

我可能会建议遵循明确生成的应用程序的布局和约定,使用根目录中的app和公共

下的静态文件
/public
   <static files>
app.js

然后执行生成的应用程序所做的事情:

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