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