Mojolicious 外部引用不只在一页上工作

Mojolicious External References Not working on only one page

如果有更多有用的代码或错误,请告诉我。

我的问题是我有外部 JS 文件,我的所有页面都可以找到它们接受一个。当我转到我的 "User" 部分时,我得到每个外部文件的 404。而且它看起来好像每个请求两次?

我的外部 JS 在 public 文件夹中。我在每个页面共享的主要布局中也有我的参考资料。

我完全不知道这可能是什么...

我的默认布局包含。

<head>
  <script type="text/javascript" src="./search.js"></script>
  <script type="text/javascript" src="./employee_information.js"></script>
  <script type="text/javascript" src="./requests.js"></script>
</head>

在我的 public 文件夹中,我有(employee_information.js、requests.js 和 search.js)

我的每个导航栏链接如下

   %= link_to 'Home' => 'phone_book_form'
   %= link_to 'Users' => 'user_index'
   %= link_to 'Account' => 'account_details'

我的路径如下

$r->get('/')->name('phone_book_form')->to('PhoneBook#form');
  $admin_authorized->get('/user_list')->name('user_index')->to('User#index');
  $authorized->get('/account_details')->name('account_details')->to('Account#details');

只有我的用户索引页面找不到外部js。

在 Firefox 开发者工具中

我最初得到 200,然后在下一个我得到 304,然后在我的用户索引页面上我得到 6 404。

我想我发现了问题...

非常感谢任何方向。

您的 javascript 文件以相对方式引用,因为您的路径以 ./ 开头。

当您在路线 / 上时(即 http://localhost:3000/), that works fine, because ./search.js starting at / is http://localhost:3000/search.js. But when you are on the /user_list route (i.e. http://localhost:3000/user_list), your ./ is now in /user_list, so it's looking for a file http://localhost:3000/user_list/search.js。网络服务器现在会在 public 文件夹中查找文件 user_list/search.js,但不会存在,所以它呈现 404 错误。

                                      | here 
<head>                                V
  <script type="text/javascript" src="./search.js"></script>
  <script type="text/javascript" src="./user_information.js"></script>
  <script type="text/javascript" src="./requests.js"></script>
</head>

相反,使用从根目录 / 开始的绝对路径。所以 URI 应该是:

/search.js
/user_information.js
/request.js