Skip to content

TypeError: Cannot read property 'then' of undefined when used with serviceworker-webpack-plugin #7615

Description

@rezonant

Bug Report or Feature Request (mark with an x)

- [x] bug report -> please search issues before submitting
- [ ] feature request

Versions.

@ngtools/webpack 1.6.2

Description

When using serviceworker-webpack-plugin, @ngtools/webpack tries to call done.then() on its after-resolvers step, but done is undefined. Crashing code is:

        compiler.plugin('after-resolvers', (compiler) => {
            // Virtual file system.
            compiler.resolvers.normal.plugin('before-resolve', (request, cb) => {
                if (request.request.match(/\.ts$/)) {
                    this.done.then(() => cb(), () => cb());
                }
                else {
                    cb();
                }
            });
        });

Furthermore, this code will run (and crash) even if the @ngtools/webpack loader definition is set to exclude the service worker TS files.

It appears that the fix may be to check if this.done is defined before delaying cb, otherwise just run cb() as if the file was not a .ts, but I'm not well versed with the @ngtools/webpack codebase. I can provide a PR if necessary.

Repro steps.

Create a webpack project which uses @ngtools/webpack as its Typescript compiler, include serviceworker-webpack-plugin, point that plugin at a .ts file.

The log given by the failure.

A change was made locally to serviceworker-webpack-plugin to output the exception that it caught:

TypeError: Cannot read property 'then' of undefined
    at Resolver.compiler.resolvers.normal.plugin (.../node_modules/@ngtools/webpack/src/plugin.js:278:30)
    at Resolver.applyPluginsAsyncSeriesBailResult1 (.../node_modules/tapable/lib/Tapable.js:256:13)
    at Resolver.doResolve (.../node_modules/enhanced-resolve/lib/Resolver.js:110:12)
    at Resolver.resolve (.../node_modules/enhanced-resolve/lib/Resolver.js:86:14)
    at asyncLib.parallel.callback (.../node_modules/webpack/lib/NormalModuleFactory.js:129:29)
    at .../node_modules/async/dist/async.js:3853:24
    at eachOfArrayLike (.../node_modules/async/dist/async.js:1003:9)
    at eachOf (.../node_modules/async/dist/async.js:1051:5)
    at _parallel (.../node_modules/async/dist/async.js:3852:5)
    at Object.parallelLimit [as parallel] (.../node_modules/async/dist/async.js:3935:5)
    at .../node_modules/webpack/lib/NormalModuleFactory.js:121:14
    at .../node_modules/webpack/lib/NormalModuleFactory.js:64:5
    at applyPluginsAsyncWaterfall (.../node_modules/webpack/lib/NormalModuleFactory.js:246:4)
    at .../node_modules/tapable/lib/Tapable.js:268:11
    at NormalModuleFactory.<anonymous> (.../path-override.plugin.js:30:24)
    at .../node_modules/tapable/lib/Tapable.js:270:14
    at NormalModuleFactory._nmf.plugin (.../node_modules/@ngtools/webpack/src/paths-plugin.js:78:24)
    at NormalModuleFactory.applyPluginsAsyncWaterfall (.../node_modules/tapable/lib/Tapable.js:272:13)
    at NormalModuleFactory.create (.../node_modules/webpack/lib/NormalModuleFactory.js:230:8)
    at Compilation._addModuleChain (.../node_modules/webpack/lib/Compilation.js:382:17)
    at Compilation.addEntry (.../node_modules/webpack/lib/Compilation.js:464:8)
    at Compiler.compiler.plugin (.../node_modules/webpack/lib/SingleEntryPlugin.js:24:16)
    at Compiler.applyPluginsParallel (.../node_modules/tapable/lib/Tapable.js:293:14)
    at .../node_modules/webpack/lib/Compiler.js:488:8
    at Compiler.applyPluginsAsyncSeries (.../node_modules/tapable/lib/Tapable.js:195:46)
    at Compiler.compile (.../node_modules/webpack/lib/Compiler.js:481:7)
    at Compiler.runAsChild (.../node_modules/webpack/lib/Compiler.js:282:7)
    at .../node_modules/serviceworker-webpack-plugin/lib/index.js:139:23
    at ServiceWorkerPlugin.handleMake (.../node_modules/serviceworker-webpack-plugin/lib/index.js:138:14)
    at Compiler.<anonymous> (.../node_modules/serviceworker-webpack-plugin/lib/index.js:104:15)
Error: Something went wrong during the make event.
    at .../node_modules/serviceworker-webpack-plugin/lib/index.js:108:20

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    P3An issue that is relevant to core functions, but does not impede progress. Important, but not urgenttype: bug/fix

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions