nx-plus: Docusaurus build crashes during minification

Current Behavior

Build process crashes at the end

Expected Behavior

Build process to pass

Steps to Reproduce

  • Create nx workspace
  • create a docusaurus app
  • Build the docusaurus app

This issue may not be prioritized if details are not provided to help us reproduce the issue.

Failure Logs

> nx run dummy-doc:build 
Creating an optimized production build...
2019-05-28-hola.md - 'id' header option is deprecated. Please use 'slug' option instead.
2019-05-29-hello-world.md - 'id' header option is deprecated. Please use 'slug' option instead.
2019-05-30-welcome.md - 'id' header option is deprecated. Please use 'slug' option instead.

✔ Client
  Compiled successfully in 8.06s

✖ Server
  Compiled with some errors in 9.59s



TypeError: Cannot read property 'replace' of undefined
    at String.replace (<anonymous>)TypeError: Cannot read property 'replace' of undefined
    at String.replace (<anonymous>)TypeError: Cannot read property 'replace' of undefined
    at String.replace (<anonymous>)TypeError: Cannot read property 'replace' of undefined
    at String.replace (<anonymous>)TypeError: Cannot read property 'replace' of undefined
    at String.replace (<anonymous>)TypeError: Cannot read property 'replace' of undefined
    at String.replace (<anonymous>)TypeError: Cannot read property 'replace' of undefined
    at String.replace (<anonymous>)TypeError: Cannot read property 'replace' of undefined
    at String.replace (<anonymous>)TypeError: Cannot read property 'replace' of undefined
    at String.replace (<anonymous>)TypeError: Cannot read property 'replace' of undefined
    at String.replace (<anonymous>)TypeError: Cannot read property 'replace' of undefined
    at String.replace (<anonymous>)TypeError: Cannot read property 'replace' of undefined
    at String.replace (<anonymous>)TypeError: Cannot read property 'replace' of undefined
    at String.replace (<anonymous>)TypeError: Cannot read property 'replace' of undefined
    at String.replace (<anonymous>)TypeError: Cannot read property 'replace' of undefined
    at String.replace (<anonymous>)
(undefined) TypeError: Cannot read property 'replace' of undefined
    at Object.options.minifyJS (main:17359:28)
    at Object.chars (main:17847:24)
    at main:46819:19
    at String.replace (<anonymous>)
    at new HTMLParser (main:46811:19)
    at minify (main:17633:3)
    at module.exports.exports.minify (main:17994:16)
    at serverEntry_render (main:84584:38)

Environment

Plugin name and version: @nx-plus/docusaurus#8b21c9f

NX Report complete

  nx : 10.2.1
  @nrwl/angular : Not Found
  @nrwl/cli : 10.2.1
  @nrwl/cypress : 10.2.1
  @nrwl/eslint-plugin-nx : 10.2.1
  @nrwl/express : Not Found
  @nrwl/jest : 10.2.1
  @nrwl/linter : 10.2.1
  @nrwl/nest : Not Found
  @nrwl/next : 10.2.1
  @nrwl/node : Not Found
  @nrwl/react : 10.2.1
  @nrwl/schematics : Not Found
  @nrwl/tao : 10.2.1
  @nrwl/web : 10.2.1
  @nrwl/workspace : 10.2.1
  typescript : 4.0.3```

About this issue

  • Original URL
  • State: closed
  • Created 4 years ago
  • Comments: 24

Most upvoted comments

@BuckyMaler I can confirm you that with terser-webpack-plugin installed manually, the build is completed with no issue.

@taylorreece thanks for the additional details, but nohoist won’t work with Nx because it doesn’t use yarn workspaces.

@dbrrt the issue is that Docusaurus resolves a different version of terser-webpack-plugin when @nrwl/web is installed. There are a couple of workarounds that may work for you as we sort out this issue. The first workaround is to install the version of terser-webpack-plugin expected by Docusaurus, i.e. yarn add terser-webpack-plugin@^4.1.0 -D. The second workaround is to switch from yarn to npm. I cannot reproduce the error when using npm.

I hope one of those workarounds help.

I’m closing this because it’s not a @nx-plus/docusaurus bug. There’s a documented workaround here thanks to @devinshoemaker, and a couple more workarounds here.

I’m going to leave this issue open for now. Though I think the fix will be a PR in Nx and/or Docusaurus. Here are a couple of workarounds in the meantime.

@dbrrt I wanted to notify you that we’ve added contributing docs so that may be helpful as you work on this. Let me know if there’s anything I can do to help.

I can reproduce the error when @nrwl/web is installed. I can also reproduce the error when @nrwl/react or @nrwl/next are installed, but that’s because @nrwl/web is a dependency of those. I think the issue may be due to a shared build dependency and Docusaurus resolving the wrong version of that dependency. @dbrrt would you like to look into this?