早午餐:将内联脚本替换为“ autoRequire”不起作用

时间:2019-06-10 20:42:03

标签: javascript module brunch

我正在尝试从前端模板中删除Context context = (Context) initialContext.lookup("java:global/<HereYouNeedMoreInformation>");,因为Internet Explorer不喜欢此行。我看到您可以在早午餐配置中使用“ modules.autoRequire”键,但无法正常工作。

当我尝试使用<script> require('scripts/app').init(); </script>时,没有任何输出或运行。与autoRequire: { 'scripts/app.js': ['scripts/app.js'] }相同。

使用autoRequire: { 'scripts/app.js': ['scripts/app'] }时出现以下错误autoRequire: { 'scripts/app.js': ['init'] },这是我在使用此设置时遇到的唯一错误。

brunch-config.js

auto-reload.js:61 Uncaught Error: Cannot find module 'init' from '/'

app.js

module.exports = {
  paths: {
    public: 'web',
    watched: ['app', 'templates']
  },

  modules: {
    autoRequire: {
      'scripts/app.js': ['init']
    }
  },

  optimize: true,

  files: {
    javascripts: {
      entryPoints: {
        'app/scripts/app.js': 'scripts/app.js'
      },
      joinTo: {
        'scripts/auto-reload.js': '/node_modules/auto-reload-brunch/'
      }
    }
  }
};

我希望app.js文件中的init函数能够在页面加载时运行!

1 个答案:

答案 0 :(得分:0)

我知道了!

autoRequire属性应如下所示:

autoRequire:  { 'scripts/app.js': ['scripts/app'] }

我的问题出在模块内部,我没有告诉代码开始运行。

const App = {
  init: function(){
    ...
  }
}
module.exports = App.init();

App.init()是重要的缺失行。再次感谢您与brunch.io所做的出色合作