首页 > 解决方案 > 为什么找不到现有的 JavaScript 函数生成未捕获的 ReferenceError

问题描述

错误:

readyException.js:6 Uncaught ReferenceError: editMap is not defined
    at HTMLDocument.<anonymous> (edit:190)
    at mightThrow (deferred.js:97)
    at process (deferred.js:139)

来自 Chrome Source 的页面(popupText使用 Rails 生成):

  <div id="map"></div>
  <script>
    var popupText = "&ge;1908<br>Benefit  St<br>&le;1908<br>Fountain Ave";
    $(document).ready(function() {
       editMap(popupText);
    });    
  </script>

application.js来自 Chrome Sources的一些相关行

function editMap(popupText) {
  if (laMap != undefined) {
    laMap.remove();
  }
  showMap(popupText)
  var drawnItems = new L.FeatureGroup();

试图将应用程序移动到 Rails 6 和 webpacker。

标签: javascriptruby-on-railsleafletwebpacker

解决方案


Webpack 不会将你的 JavaScript 暴露在全局范围内;每个文件都被视为一个模块,在实践中,它是一个具有自己作用域的函数。要公开对全局范围的特定引用,您可以从模块内将其分配给window对象,例如。window.editMap = editMap


推荐阅读