lodash / babel-plugin-lodash

Modular Lodash builds without the hassle.
Other
1.96k stars 91 forks source link

`isModuleDeclaration` has been deprecated #259

Open eleven-net-cn opened 1 year ago

eleven-net-cn commented 1 year ago
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`.
qqjay2017 commented 1 year ago

me too , what can i do to fix it

sggvision commented 1 year ago

Same here

llxsgdsg commented 1 year ago

me too

char0n commented 1 year ago

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...
}
samuelslva-jlfs commented 1 year ago

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

eleven-net-cn commented 1 year ago

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

char0n commented 1 year ago

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.

miqdadfwz commented 1 year ago

If you are using pnpm, you can use this instead

 "pnpm": {
    "overrides": {
      "babel-plugin-lodash>@babel/types": "~7.20.0"
    }
  }
justtoconfirm commented 1 year ago

I'm using gatsby@5.10.0 that looks to have babel-plugin-lodash@3.3.4 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

Semigradsky commented 1 year ago

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

UPD: @sigmacomputing/babel-plugin-lodash

arsinclair commented 11 months ago

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?

ThiefMaster commented 11 months ago

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.

kirkstrobeck commented 10 months ago

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

gknapp commented 10 months ago

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).