首页 > 解决方案 > Rails Webpacker SCRIPT5009:'app' 未定义 - IE11 问题

问题描述

由于某种原因,我的大部分 JS 在 IE11 及更低版本中工作都失败了。Chrome、Firefox 和 Edge 没有问题。

我在 application.html.slim 文件中有:

meta http-equiv='X-UA-Compatible" content="IE=edge'

我发现了这个:github webpacker线程

所以我在我的 config > webpack > production.js 中尝试了以下操作:

if (environment.plugins.getIndex('UglifyJs') !== -1) {
  const plugin = environment.plugins.get('UglifyJs');
  plugin.options.uglifyOptions.ecma = 5;
}

environment.config.optimization.minimizer[0].options.uglifyOptions.ecma = undefined

environment.plugins.get("UglifyJs").options.uglifyOptions.ecma = 5

这些都没有奏效。在控制台中我得到:

SCRIPT5009:“应用程序”未定义

在我的主页上,我进行了设置:

= content_for :head do
  = stylesheet_pack_tag 'styles/home'
  = javascript_pack_tag 'home'
  = javascript_include_tag "//maps.googleapis.com/maps/api/js?key=#{ENV['MAP_KEY']}"
= content_for :body do
 .container
  .row
   #map-banner.banner[type"hidden" data-location=all_locations.to_json]
 =render template: '/layouts/application'
javascript:
 document.addEventListener('DOMContentLoaded', app.home);

然后在我的 javascript > packs > home.js

import { mapStyle } from './styles/mapStyle';
app.home = () => {
  function init() {
    setupSlider();
    homeSlider();
    startGoogleMap();
    let tabs = document.querySelectorAll('a.tab');
    for (let tab of tabs) {
      tab.addEventListener('click', tabClicked);
    }
    document
      .querySelector('#region-select_')
      .addEventListener('change', selectClicked);
  }
return init();
};

当前版本:

当我在 tiny-slider.js 上签入网络时,它返回的状态码为 304,但在 Chrome 中返回的是 200。知道为什么它不编译吗?

标签: ruby-on-railswebpack

解决方案


将其留在这里以防有人发现它有用。更新了 config > webpack > environment.js:

environment.loaders.get('babel').exclude = [];

推荐阅读