ember-cli / ember-twiddle

JSFiddle type thing for ember-cli style code
https://ember-twiddle.com
MIT License
267 stars 89 forks source link

Build fails for addons that are using `@embroider/macros` #732

Open jelhan opened 4 years ago

jelhan commented 4 years ago

If an addon is using @embroider/macros the build fails:

- Installing addon package

- Installing addon package
Installing packages... This might take a couple of minutes.
- Installing addon package
- npm: Installing ember-bootstrap@4.0.0 ...
npm: Installed ember-bootstrap@4.0.0
installing ember-bootstrap
Installing for Bootstrap 4 using preprocessor none
  install package bootstrap

Installing packages... This might take a couple of minutes.
- npm: Installing bootstrap@^4.3.1 ...
npm: Installed bootstrap@^4.3.1
Configuration file could not be edited. Manually update your ember-cli-build.js to include 'ember-bootstrap': {"bootstrapVersion":4,"importBootstrapCSS":true}
Installed addon package.
- Building
[Embroider:MacrosConfig] cannot read userConfigs until MacrosConfig has been finalized.

Stack Trace and Error Report: /tmp/error.dump.67c8db1caf05113d786b2c2ccd26a6b8.log

No addon.js created

To be honest I'm not 100%ly sure if embroider build time macros are causing the issue. I'm seeing the above error message with ember-bootstrap@^4.0.0. As far as I'm aware it's the only addon using @embroider/macros. So I haven't tested with any other.

Please not that @embroider/macros are working fine in a default ember project. They do not require embroider build.

I have tested on ember-twiddle.com and canary.ember-twiddle.com. Adding { "ember-bootstrap": "4.0.0" } to the list of addons is enough to see the error.

Gaurav0 commented 4 years ago

@jelhan You can test the build by cloning https://github.com/joostdevries/twiddle-backend and running the test-ember-version-locally.sh script. I might not be able to get to this quickly. Please ask if you have any issues.

jelhan commented 4 years ago

Thanks a lot for sharing that information.

I was able to reproduce the bug locally by running ./test-ember-version-locally.sh 3.18.0 ember-bootstrap 4.0.0. But the stack trace is not that helpful:

ERROR Summary:

  - broccoliBuilderErrorStack: [undefined]
  - code: [undefined]
  - codeFrame: [undefined]
  - errorMessage: [Embroider:MacrosConfig] cannot read userConfigs until MacrosConfig has been finalized.
  - errorType: [undefined]
  - location:
    - column: [undefined]
    - file: [undefined]
    - line: [undefined]
  - message: [Embroider:MacrosConfig] cannot read userConfigs until MacrosConfig has been finalized.
  - name: Error
  - nodeAnnotation: [undefined]
  - nodeName: [undefined]
  - originalErrorMessage: [undefined]
  - stack: Error: [Embroider:MacrosConfig] cannot read userConfigs until MacrosConfig has been finalized.
    at MacrosConfig.get userConfigs [as userConfigs] (/home/jelhan/tmp/twiddle-backend/tmp/3.18.0/node_modules/@embroider/macros/src/macros-config.js:98:19)
    at Object.get userConfigs [as userConfigs] (/home/jelhan/tmp/twiddle-backend/tmp/3.18.0/node_modules/@embroider/macros/src/macros-config.js:133:29)
    at _clone (/home/jelhan/tmp/twiddle-backend/tmp/3.18.0/node_modules/clone/clone.js:162:31)
    at _clone (/home/jelhan/tmp/twiddle-backend/tmp/3.18.0/node_modules/clone/clone.js:162:18)
    at _clone (/home/jelhan/tmp/twiddle-backend/tmp/3.18.0/node_modules/clone/clone.js:162:18)
    at _clone (/home/jelhan/tmp/twiddle-backend/tmp/3.18.0/node_modules/clone/clone.js:162:18)
    at clone (/home/jelhan/tmp/twiddle-backend/tmp/3.18.0/node_modules/clone/clone.js:202:10)
    at Class._getAddonProvidedConfig (/home/jelhan/tmp/twiddle-backend/tmp/3.18.0/node_modules/ember-cli-babel/index.js:251:19)
    at Class._getBabelOptions (/home/jelhan/tmp/twiddle-backend/tmp/3.18.0/node_modules/ember-cli-babel/index.js:270:36)
    at Class.buildBabelOptions (/home/jelhan/tmp/twiddle-backend/tmp/3.18.0/node_modules/ember-cli-babel/index.js:33:17)

Will try to dig deeper into it later. Just wanted to leave this here for reference in case someone else has the time to pick it up earlier.

jacobq commented 2 years ago

See also https://github.com/embroider-build/embroider/issues/882 Is there a way to override low-level things like ember-cli-handlebars in a twiddle?