早午餐构建,但打开

时间:2017-04-28 19:29:22

标签: javascript build brunch

我们正试图将我们的前端构建转换为使用Brunch。这是我到目前为止的早午餐配置:

module.exports = {

  files: {
    javascripts: {
      joinTo: {
        'vendor.js': /^(?!source)/,
        'app.js': /^source/
      },
      entryPoints: {
        'source/scripts/app.jsx': 'app.js'
      }
    },
    stylesheets: {joinTo: 'core.css'},
  },

  paths: {
    watched: ['source']
  },

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

  plugins: {
    babel: {presets: ['latest', 'react']},
    postcss: {processors: [require('autoprefixer')]},
    assetsmanager: {
      copyTo: {
        'assets': ['source/resources/*']
      }
    },
    static: {
      processors: [
        require('html-brunch-static')({
          processors: [
            require('pug-brunch-static')({
              fileMatch: 'source/views/home.pug',
              fileTransform: (filename) => {
                filename = filename.replace(/\.pug$/, '.html');
                filename = filename.replace('views/', '');
                return filename;
              }
            })
          ]
        })
      ]
    }

  }

};

我将modules.autoRequire部分添加到Brunch配置中,然后发生了以下错误。没有modules.autoRequire我没有控制台错误,但我的网络应用程序也无法启动。运行brunch build会导致错误,但是当我打开构建的网站时,我会收到错误

  

未捕获错误:无法从'lodash / lodash.js'中找到模块'缓冲区'

stacktrace中的第一行指向vendor.js中的这个函数

var require = function(name, loaderPath) {
  if (loaderPath == null) loaderPath = '/';
  var path = expandAlias(name);

  if (has.call(cache, path)) return cache[path].exports;
  if (has.call(modules, path)) return initModule(path, modules[path]);

  throw new Error("Cannot find module '" + name + "' from '" + loaderPath + "'");
};

我不知道如何继续让我的构建工作。这issue似乎可能是相关的。

如何克服此错误? (请随时询问其他信息。我不确定什么都有用。)

1 个答案:

答案 0 :(得分:1)

Brunch从package.json中定义的(特定于早午餐的)npm包中获取构建管道的步骤。因此,请确保包含所有需要的包(或删除不必要的包)。

请参阅docs for more information about how to use plugins