emberjs / emberjs/ember-cli-babel

deprecate is not available from `@ember/debug` pre 4.0.0

Open
#441 21 comments 0 reactions 0 assignees View on GitHub
Dominant language
JavaScript
Stars
152
Forks
115
Avg merge
23h 22m
Merged PRs (30d)
4

Description

I was originally going to report this on the embroider repo, as I had thought it was a v2-addon issue.
But it is not!

reproduction is super easy:

```js
// app/app.js
import { deprecate } from '@ember/debug';

console.log(deprecate);
```

Repro repo: https://github.com/NullVoxPopuli/repo-repro-ember-cli-babel-441
_just run `ember test`_

----------------------

This was discovered while trying to add `deprecate` usage to a v2-addon
over in [this PR](https://github.com/NullVoxPopuli/ember-resources/pull/445/files#diff-ddf11c28e1340e1c788b2936b163066a8895acbeee2b975f456df3f0fd12a420)

In the scenarios test suite, it seems that any interaction from a v2
addon with deprecate from `@ember/debug` causes the test suite to hang.

In a real app / addon ( < ember-source @ v4), a different behavior occurs (and what I was
trying to re-create in this change):
```
ERROR in ../../ember-resources/dist/deprecated-in-v4/use.js
Module build failed (from ../../node_modules/.pnpm/babel-loader@8.2.3_9351ded4f79a023849d74b5df047d562/node_modules/babel-loader/lib/index.js):
SyntaxError: /✂️/ember-resources/ember-resources/dist/deprecated-in-v4/use.js: @ember/debug does not have a deprecate export
1 | import { getValue } from '@glimmer/tracking/primitives/cache';
> 2 | import { deprecate, assert } from '@ember/debug';
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
3 | import { invokeHelper } from '@ember/helper';
4 | import { normalizeThunk } from './utils.js';
5 |
at File.buildCodeFrameError (/✂️/ember-resources/node_modules/.pnpm/@babel+core@7.17.5_supports-color@8.1.1/node_modules/@babel/core/lib/transformation/file/file.js:249:12)
at NodePath.buildCodeFrameError (/✂️/ember-resources/node_modules/.pnpm/@babel+traverse@7.17.3_supports-color@8.1.1/node_modules/@babel/traverse/lib/path/index.js:143:21)
at /✂️/ember-resources/node_modules/.pnpm/babel-plugin-ember-modules-api-polyfill@3.5.0/node_modules/babel-plugin-ember-modules-api-polyfill/src/index.js:228:20
at Array.forEach ()
at processImportDeclaration (/✂️/ember-resources/node_modules/.pnpm/babel-plugin-ember-modules-api-polyfill@3.5.0/node_modules/babel-plugin-ember-modules-api-polyfill/src/index.js:188:16)
at PluginPass.ImportDeclaration (/✂️/ember-resources/node_modules/.pnpm/babel-plugin-ember-modules-api-polyfill@3.5.0/node_modules/babel-plugin-ember-modules-api-polyfill/src/index.js:321:9)
at newFn (/✂️/ember-resources/node_modules/.pnpm/@babel+traverse@7.17.3_supports-color@8.1.1/node_modules/@babel/traverse/lib/visitors.js:177:21)
at NodePath._call (/✂️/ember-resources/node_modules/.pnpm/@babel+traverse@7.17.3_supports-color@8.1.1/node_modules/@babel/traverse/lib/path/context.js:53:20)
at NodePath.call (/✂️/ember-resources/node_modules/.pnpm/@babel+traverse@7.17.3_supports-color@8.1.1/node_modules/@babel/traverse/lib/path/context.js:40:17)
at NodePath.visit (/✂️/ember-resources/node_modules/.pnpm/@babel+traverse@7.17.3_supports-color@8.1.1/node_modules/@babel/traverse/lib/path/context.js:100:31)
@ ../../ember-resources/dist/index.js 1:263-306 1:263-306
@ ../../../../../../../tmp/broccoli-2446401zQEKH5Rl0yks/cache-323-webpack_bundler_ember_auto_import_webpack/tests.js 15:49-75}
```

According to [the docs for `@ember/debug`](https://api.emberjs.com/ember/3.25/modules/@ember%2Fdebug),
`deprecate` exists, so the above code _should_ work (I don't yet know why -- first step is a failing
test reproduction, but ran in to the test suite hanging issue.)

For ember-source@4.0+, the above issue is not present -- and judging by
how (I happen to know that) pre 3.27, all ember apis were on the `Ember`
global _and_ that embroider has no compat-adapter for `@ember/debug`,
my _hunch_ is that this is actually ember-cli-bable related -- but I
wanted to open a test here, since embroider has a much better
"e2e"-style test suite than ember-cli-babel does.

Also, the stack trace shows `babel-plugin-ember-modules-api-polyfill`,
which is managed by ember-cli-babel.

_however_ in writing this commit message / PR description_, I've found
that this behavior exists on a vanilla 3.25 app (new as of _now_).
So since the reproduction is _not at all_ embroider or v2 addon related,
I'm going to post on ember-cli-babel

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.