generator-polymer-init-custom-build icon indicating copy to clipboard operation
generator-polymer-init-custom-build copied to clipboard

pipe(project.analyzer) throws error TypeError: dest.on is not a function

Open marko911 opened this issue 7 years ago • 0 comments

I can't figure out why this section of my code is throwing a Type error. The project gulp file looks like

const path = require('path');
const gulp = require('gulp');
const polymer = require('polymer-build');
const mergeStream = require('merge-stream');
const PolymerProject = require('polymer-build').PolymerProject;
const srcHtmlSplitter = polymer.HtmlSplitter;
const polymerJSON = require(global.config.polymerJsonPath);
const project = new PolymerProject(polymerJSON);
const bundledPath = path.join(global.config.build.rootDirectory, global.config.build.bundledDirectory);
const unbundledPath = path.join(global.config.build.rootDirectory, global.config.build.unbundledDirectory);

const sourcesSplitter = new srcHtmlSplitter();
const depSplitter = new srcHtmlSplitter();
function splitSource() {
  return project.sources().pipe(sourcesSplitter.split());
}


function splitDependencies() {
  return project.dependencies().pipe(depSplitter.split());
}

function rejoin() {
  return sourcesSplitter.rejoin();
}


function merge(source, dependencies) {
    const mergedFiles = mergeStream(source(), dependencies())
      .pipe(project.analyzer.analyzer);
    const bundleType = global.config.build.bundleType;
    let outputs = [];

    if (bundleType === 'both' || bundleType === 'bundled') {
      console.log('both-bundled')
      outputs.push(writeBundledOutput(polymer.forkStream(mergedFiles)));
    }
    if (bundleType === 'both' || bundleType === 'unbundled') {
      console.log('unbundled')
      outputs.push(writeUnbundledOutput(polymer.forkStream(mergedFiles)));
    }

    return Promise.all(outputs);
}


function writeBundledOutput(stream) {
  return new Promise(resolve => {
    stream.pipe(project.bundler)
      .pipe(gulp.dest(bundledPath))
      .on('end', resolve);
  });
}


function writeUnbundledOutput(stream) {
  return new Promise(resolve => {
    stream.pipe(gulp.dest(unbundledPath))
      .on('end', resolve);
  });
}


function serviceWorker() {
  const bundleType = global.config.build.bundleType;
  let workers = [];

  if (bundleType === 'both' || bundleType === 'bundled') {
    workers.push(writeBundledServiceWorker());
  }
  if (bundleType === 'both' || bundleType === 'unbundled') {
    workers.push(writeUnbundledServiceWorker());
  }

  return Promise.all(workers);
}

function writeBundledServiceWorker() {
  return polymer.addServiceWorker({
    project: project,
    buildRoot: bundledPath,
    swConfig: global.config.swPrecacheConfig,
    serviceWorkerPath: global.config.serviceWorkerPath,
    bundled: true
  });
}

function writeUnbundledServiceWorker() {
  return polymer.addServiceWorker({
    project: project,
    buildRoot: unbundledPath,
    swConfig: global.config.swPrecacheConfig,
    serviceWorkerPath: global.config.serviceWorkerPath
  });
}

module.exports = {
  splitSource: splitSource,
  splitDependencies: splitDependencies,
  rejoin: rejoin,
  merge: merge,
  serviceWorker: serviceWorker
};

and when I try to run gulp file that uses this file, I get this

/node_modules/readable-stream/lib/_stream_readable.js:494
  dest.on('unpipe', onunpipe);
       ^
TypeError: dest.on is not a function
    at PassThrough.Readable.pipe (/Users/marko/Documents/projects/etools-infra/dashboard/node_modules/readable-stream/lib/_stream_readable.js:494:8)
    at Object.merge (/Users/marko/Documents/projects/etools-infra/dashboard/gulp-tasks/project.js:60:8)
    at Object.<anonymous> (/Users/marko/Documents/projects/etools-infra/dashboard/gulpfile.js:127:11)
    at Module._compile (module.js:570:32)
    at Object.Module._extensions..js (module.js:579:10)
    at Module.load (module.js:487:32)
    at tryModuleLoad (module.js:446:12)
    at Function.Module._load (module.js:438:3)
    at Module.require (module.js:497:17)
    at require (internal/module.js:20:19)

Ive seen the merge used this way in various other gulp files in polymer libs without problem so I can't figure out why this is happening here.

marko911 avatar Sep 27 '17 21:09 marko911