babel-plugin-lodash icon indicating copy to clipboard operation
babel-plugin-lodash copied to clipboard

`isModuleDeclaration` has been deprecated

Open eleven-net-cn opened this issue 2 years ago • 14 comments

image

https://github.com/babel/babel/pull/15266

@babel/types v7.21.0, isModuleDeclaration has been deprecated, the terminal has the following warning.

Trace: `isModuleDeclaration` has been deprecated, please migrate to `isImportOrExportDeclaration`.

eleven-net-cn avatar Feb 21 '23 06:02 eleven-net-cn

me too , what can i do to fix it

qqjay2017 avatar Feb 21 '23 07:02 qqjay2017

Same here

sggvision avatar Feb 21 '23 08:02 sggvision

me too

llxsgdsg avatar Feb 21 '23 09:02 llxsgdsg

The workaround for this issue (until it's fixed in babel-plugin-lodash) , you have to do the following modification in you babel.config.js file:

/**
 * This is override for https://github.com/lodash/babel-plugin-lodash/issues/259.
 * babel-plugin-lodash is using deprecated babel API, which causes generation of many
 * console.trace calls.
 */

const consoleTrace = console.trace.bind(console);
console.trace = (message, ...optionalParams) => {
  if (
    typeof message === 'string' &&
    message.startsWith('`isModuleDeclaration` has been deprecated')
  ) {
    return undefined; // noop
  }

  return consoleTrace(message, ...optionalParams);
};

module.exports = {
  ...babel-config...
}

char0n avatar Feb 21 '23 10:02 char0n

or if you use yarn, in package.json:

{
   // [...]
   "resolutions": {
    "babel-plugin-lodash/@babel/types": "~7.20.0"
  }
}

EDIT: if you use NPM use this instead on your package.json (I guess, according to the docs)

{
   // [...]
  "overrides": {
    "babel-plugin-lodash": {
      "@babel/types": "~7.20.0"
    }
  }
}

EDIT2: Be careful with this solution this will lock you forever on an old @babel/types version, right now its fine as we wait for babel/babel#15448 be released and we're a single minor behind, but don't rely on this forever, there might be security/performance improvements on babel (unless when remove the deprecated method outright then locking will be the only option), the real solution would be this project updating the deprecated reference, both mine and @char0n's solutions are palliatives. Stay on top of this issue to either replace this (seemly abandoned) library, or get a new version of this that doesn't need the version locking or warning clobbering

samuelslva-jlfs avatar Feb 21 '23 14:02 samuelslva-jlfs

or if you use yarn, in package.json:

{
   // [...]
   "resolutions": {
    "babel-plugin-lodash/@babel/types": "~7.20.0"
  }
}

EDIT: if you use NPM use this instead on your package.json (I guess, according to the docs)

{
   // [...]
  "overrides": {
    "babel-plugin-lodash": {
      "@babel/types": "~7.20.0"
    }
  }
}

It works fine with npm

eleven-net-cn avatar Feb 22 '23 02:02 eleven-net-cn

Yep npm overrides is a good solution as well, but be sure to be using npm >= 8.3.0. Earlier versions of npm don't support overrides.

char0n avatar Feb 22 '23 08:02 char0n

If you are using pnpm, you can use this instead

 "pnpm": {
    "overrides": {
      "babel-plugin-lodash>@babel/types": "~7.20.0"
    }
  }

miqdadfwz avatar Jun 06 '23 02:06 miqdadfwz

I'm using [email protected] that looks to have [email protected] as a dependency package and I'm getting this issue as a warning when I run npm run develop. I've attempted to update the package.json file as mentioned previously, but this hasn't worked.

Is there an expected fix for this? Looks like a PR is open but has not been approved/merged: https://github.com/lodash/babel-plugin-lodash/pull/261

justtoconfirm avatar Jun 06 '23 13:06 justtoconfirm

This plugin looks unmaintained. Can anyone publish a fork with fix?

UPD: @sigmacomputing/babel-plugin-lodash

Semigradsky avatar Jun 06 '23 20:06 Semigradsky

Forking is the worst option, since it doesn't solve the issue for the ecosystem that relies on the plugin (e.g. GatsbyJS). I think we should as much as possible try to draw the attention of maintainers here. There seems to be an easy fix for the issue.

@jdalton @mathiasbynens @veksen any thoughts?

arsinclair avatar Jul 19 '23 04:07 arsinclair

I'd also love to see an update - the warning is harmless (so far, dunno when the deprecated object gets removed for good) but nonetheless annoying.

ThiefMaster avatar Aug 01 '23 09:08 ThiefMaster

Note the warning in https://github.com/lodash/babel-plugin-lodash/issues/259#issuecomment-1438592335

It’s best to just set this in your package.json deps

{
  "devDependencies": {
    "@babel/core": "~7.20.0",
  }
}

update the dep later

kirkstrobeck avatar Aug 18 '23 17:08 kirkstrobeck

Note the warning in #259 (comment)

It’s best to just set this in your package.json deps

{
  "devDependencies": {
    "@babel/core": "~7.20.0",
  }
}

update the dep later

I found just installing @babel/types to the latest 7.20 release silenced this message (I am tied to node v14 for a previous product release):

{
  "devDependencies": {
    "@babel/types": "7.20.7"
  }
}

I am able to use the latest @babel/core with this installed (time of writing 7.22.15).

gknapp avatar Sep 06 '23 10:09 gknapp