Mojolicious外部参考不仅仅在一个页面上工作

时间:2017-09-22 12:54:11

标签: javascript mojolicious

如果有更多有用的代码或错误,请与我们联系。

我的问题是我有外部JS文件,我的所有页面都可以找到它们。当我转到“用户”部分时,我会为每个外部文件获取404。它看起来好像每次请求两次?

我在公共文件夹中有我的外部JS。我也在每个页面共享的主要布局中有我的引用。

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

我的默认布局包含。

<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>

在我的公共文件夹中,我有(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.

我想我发现了这个问题...... enter image description here

非常感谢任何方向。

1 个答案:

答案 0 :(得分:3)

您的javascript文件是以相对方式引用的,因为您使用./启动路径。

当你在路线/(即http://localhost:3000/)时,这很好,因为从./search.js开始的/http://localhost:3000/search.js。但当您使用/user_list路线(即http://localhost:3000/user_list)时,您的./现在位于/user_list,因此它正在寻找文件{{3} }。网络服务器现在在user_list/search.js文件夹中查找文件public,但该文件不存在,因此会出现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