Perl Mojolicious在获得JS和CSS时提供404

Perl Mojolicious在获得JS和CSS时提供404,perl,mojolicious,mojolicious-lite,Perl,Mojolicious,Mojolicious Lite,我是Mojolicious的新手,我做了很多事情,但是我遇到了一个问题,我在下面的代码中重新创建了这个问题 问题很简单:我无法让它加载外部CSS和JS文件。令我惊讶的是,它给出了404个错误,好像它试图将这些静态文件作为路由服务。似乎没有其他人有这个问题,所以我显然做了一些(或错过了一些)愚蠢的事情 相关文件位于相对于perl文件(errorddemo.pl)的./css和./js目录中。我尝试过使用和不使用前导“/”,以及我能想到的任何其他变体 代码如下: #!/usr/bin/env per

我是Mojolicious的新手,我做了很多事情,但是我遇到了一个问题,我在下面的代码中重新创建了这个问题

问题很简单:我无法让它加载外部CSS和JS文件。令我惊讶的是,它给出了404个错误,好像它试图将这些静态文件作为路由服务。似乎没有其他人有这个问题,所以我显然做了一些(或错过了一些)愚蠢的事情

相关文件位于相对于perl文件(errorddemo.pl)的./css和./js目录中。我尝试过使用和不使用前导“/”,以及我能想到的任何其他变体

代码如下:

#!/usr/bin/env perl
use Mojolicious::Lite;
get '/' => sub {
    my $c = shift;                                                     
    $c->render('index');
};            
app->start;

__DATA__
@@ index.html.ep
<!DOCTYPE html>
<html>
    %= stylesheet '/css/bootstrap-3.3.2-dist/css/bootstrap.css'
</head>      
<body>
    <p>blah
    %= javascript '/js/jquery-2.1.3.js'
</body>     
</html>
生成的HTML是:

<!DOCTYPE html>
<html>
    <link href="/css/bootstrap-3.3.2-dist/css/bootstrap.css" rel="stylesheet" />
</head>
<body>
    <p>blah
    <script src="/js/jquery-2.1.3.js"></script>
</body>

废话

由./public提供,相对于lite应用程序(errorddemo.pl)

您可以通过修改
app->static->path
中的数组引用来指定其他文件夹:

push @{app->static->paths} => '.';

我不推荐来自tempire的建议,因为它将向公众公开您的完整项目文件夹(包括errordemo.pl和任何私有配置文件)

今后,我建议您调查
路径设置为:

warn join ":", @{app->static->paths};
这些有趣的信息将让您了解Mojolicious在哪里查找静态文件和模板

warn join ":", @{app->static->paths};
warn join ":", @{app->static->classes};
warn join ":", @{app->renderer->paths};
warn join ":", @{app->renderer->classes};
请注意,“路径”优先于“类”。您可以在此处阅读有关属性的更多信息:


谢谢——我知道我一定错过了一些基本的东西。我已经将我的css和js文件夹移动到公共文件夹中,现在它可以工作了。“public”目录的使用记录在下面,毫无疑问也记录在其他地方。。。“不存在”会有所帮助。也许我应该去做:)说得好。我只想知道js和css文件(通常)应该在
public
中。我没有真正考虑过将当前目录添加到
app->static->path
中的含义,但我同意这是一个坏主意。感谢您提供有关显示所用路径值的提示。
warn join ":", @{app->static->paths};
warn join ":", @{app->static->classes};
warn join ":", @{app->renderer->paths};
warn join ":", @{app->renderer->classes};