未捕获的 ReferenceError:未定义 jstz

Posted

技术标签:

【中文标题】未捕获的 ReferenceError:未定义 jstz【英文标题】:Uncaught ReferenceError: jstz is not defined 【发布时间】:2020-12-04 05:51:45 【问题描述】:

您好,我正在使用 webpacker 使用 Rails 6 开发应用程序,遇到 javascript 错误。

    Uncaught ReferenceError: jstz is not defined
    at htmlDocument.<anonymous> ((index):62)
    at fire (jquery.js:975)
    at Object.fireWith [as resolveWith] (jquery.js:1085)
    at Function.ready (jquery.js:407)
    at HTMLDocument.DOMContentLoaded (jquery.js:84)

我看到 webpacker 编译成功

Entrypoint application = js/application-7e55ed0e528c94e39f58.js js/application-7e55ed0e528c94e39f58.js.map
Entrypoint cookie = js/cookie-f1267dd65b07bdb515fe.js js/cookie-f1267dd65b07bdb515fe.js.map
Entrypoint jquery = js/jquery-08b07c2f819304da36bb.js js/jquery-08b07c2f819304da36bb.js.map
Entrypoint jstz = js/jstz-e4a49c2bcb34d7327712.js js/jstz-e4a49c2bcb34d7327712.js.map
Entrypoint require = js/require-bbf43dd046c0adca977d.js js/require-bbf43dd046c0adca977d.js.map
[./app/javascript/channels/index.js] 211 bytes application [built]
[./app/javascript/packs/application.js] 1.46 KiB application [built]
[./app/javascript/packs/cookie.js] 737 bytes cookie [built]
[./app/javascript/packs/jquery.js] 289 KiB jquery [built]
[./app/javascript/packs/jstz.min.js] 5.93 KiB jstz [built]
[./app/javascript/packs/require.js] 25.8 KiB require [built]

我在我的视图文件中使用 jstz,如下所示

<%= javascript_pack_tag 'jstz'  %>
<%= javascript_tag do -%>
jQuery(document).ready(function () 
  jQuery('#user_name').focus();
  jQuery('#user_time_zone').val(jstz.determine().name());
);

<% end -%>

请帮我解决这个问题,我纠结了很久,真的很费时间。

【问题讨论】:

【参考方案1】:

而不是包含jstz,我认为如果您让yarn 为您提供漫画插件会更好。 要完成这项工作,您应该在文件中编写脚本,然后将其包含在视图中:

// file something.js
const jstz = require('packs/jstz.min.js');
$(document).ready(function () 
  $('#user_name').focus();
  $('#user_time_zone').val(jstz.determine().name());
);

在视图中:

<%= javascript_pack_tag 'something'  %>

或者您可以通过添加到您的 appliation.js 中使 jstz 可以调用全局:

const jstz = require('packs/jstz.min.js');
window.jstz = jstz

在视图中:

<%= javascript_tag do -%>
jQuery(document).ready(function () 
  jQuery('#user_name').focus();
  jQuery('#user_time_zone').val(jstz.determine().name());
);

<% end -%>

【讨论】:

嗨,正如你所说,我已经用 yarn 插件管理了 jstz,这对我有用。谢谢你的建议 :)

以上是关于未捕获的 ReferenceError:未定义 jstz的主要内容,如果未能解决你的问题,请参考以下文章

未捕获的 ReferenceError:未定义 showCategory

未捕获的 ReferenceError:“$ 未定义”[重复]

PhoneGap 错误 - “未捕获的 ReferenceError:cordova 未定义”

未捕获的 ReferenceError:$ 未定义 [重复]

未捕获的 ReferenceError:未定义窗口

未捕获的 ReferenceError:未定义 url