then / is-promise

Test whether an object looks like a promises-a+ promise
MIT License
282 stars 32 forks source link

ERR_INVALID_PACKAGE_TARGET #13

Closed Sorunome closed 4 years ago

Sorunome commented 4 years ago

The module fails to import with node v13.12.0. The version 2.1.0 still works fine.

sorunome@sorunome-desktop repos/mx-puppet-skype $ node ./build/index.js                                 1
internal/modules/cjs/loader.js:616
            if (e.code !== 'ERR_PACKAGE_PATH_NOT_EXPORTED') throw e;
                                                            ^

Error [ERR_INVALID_PACKAGE_TARGET]: Invalid "exports" main target "index.js" defined in the package config /home/sorunome/repos/mx-puppet-skype/node_modules/is-promise/package.json
    at resolveExportsTarget (internal/modules/cjs/loader.js:574:13)
    at resolveExportsTarget (internal/modules/cjs/loader.js:613:20)
    at applyExports (internal/modules/cjs/loader.js:503:14)
    at resolveExports (internal/modules/cjs/loader.js:541:12)
    at Function.Module._findPath (internal/modules/cjs/loader.js:661:22)
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:963:27)
    at Function.Module._load (internal/modules/cjs/loader.js:859:27)
    at Module.require (internal/modules/cjs/loader.js:1036:19)
    at require (internal/modules/cjs/helpers.js:72:18)
    at Object.<anonymous> (/home/sorunome/repos/mx-puppet-skype/node_modules/lowdb/lib/main.js:4:17) {
  code: 'ERR_INVALID_PACKAGE_TARGET'
}
DeabitTech commented 4 years ago

so this is resolved?

CyrusOfEden commented 4 years ago

Nope, and it's broken serverless for me :(

cipchk commented 4 years ago

Similar:

Unknown error: Error [ERR_REQUIRE_ESM]: Must use import to load ES Module: /home/vsts/work/1/s/node_modules/is-promise/index.js
require() of ES modules is not supported.
require() of /home/vsts/work/1/s/node_modules/is-promise/index.js from /home/vsts/work/1/s/node_modules/run-async/index.js is an ES module file as it is a .js file whose nearest parent package.json contains "type": "module" which defines all .js files in that package scope as ES modules.
Instead rename /home/vsts/work/1/s/node_modules/is-promise/index.js to end in .cjs, change the requiring code to use import(), or remove "type": "module" from /home/vsts/work/1/s/node_modules/is-promise/package.json.

A full log refer to azure pipelines

Sorunome commented 4 years ago

so this is resolved?

Nope, it got broken in the 2.2.0 update about an hour ago and there is no fix for it yet

monken commented 4 years ago

The left pad fiasco all over. https://www.theregister.co.uk/2016/03/23/npm_left_pad_chaos/

It's a single line of code. Why do we need a package for this?

onhate commented 4 years ago

Same is happening to me, started some minutes ago:

Error [ERR_REQUIRE_ESM]: Must use import to load ES Module: .../node_modules/is-promise/index.js
require() of ES modules is not supported.
samblake commented 4 years ago

Broke Serverless for me too! :(

RyanZim commented 4 years ago

Duplicate of https://github.com/then/is-promise/issues/12.

CyrusOfEden commented 4 years ago

If you're using Yarn here's a fix:

  1. Run yarn why is-promise
  2. For every package that depends on is-promise, pin the resolution. In my case, serverless was installing run-async and memoizee, which each had their own copy of is-promise. I added the following key to my package.json:
  "resolutions": {
    "is-promise": "2.1.0",
    "run-async/is-promise": "2.1.0",
    "memoizee/is-promise": "2.1.0"
  }

Then I rm -rf'd the directories with run-async and memoizee and reinstalled them using yarn add. Works for me šŸ‘

mistakenot commented 4 years ago

Broke create-react-app for me.

$ npx create-react-app my-app
npx: installed 99 in 7.558s
Must use import to load ES Module: /home/charlie/.npm/_npx/20884/lib/node_modules/create-react-app/node_modules/is-promise/index.js
require() of ES modules is not supported.
crsohr commented 4 years ago

If you're using npm, you can fix the issue by editing your package-lock.json file like so.

Identify the modules that are using the failing is-promise modules:

 "run-async": {                                                                                                                                                                                                                
      "version": "2.4.0",                                                                                                                                                                                                         
      "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.0.tgz",                                                                                                                                                   
      "integrity": "sha512-xJTbh/d7Lm7SBhc1tNvTpeCHaEzoyxPrqNlvSdMfBTYwaY++UJFyXUOxAtsRUXjlqOfj8luNaR9vjCh4KeV+pg==",                                                                                                             
      "dev": true,                                                                                                                                                                                                                
      "requires": {                                                                                                                                                                                                               
        "is-promise": "^2.1.0"                                                                                                                                                                                                    
      }                                                                                                                                                                                                                           
    },

Move the is-promise out of requires and create a new object dependencies:

"run-async": {                                                                                                                                                                                                                
      "version": "2.4.0",                                                                                                                                                                                                         
      "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.0.tgz",                                                                                                                                                   
      "integrity": "sha512-xJTbh/d7Lm7SBhc1tNvTpeCHaEzoyxPrqNlvSdMfBTYwaY++UJFyXUOxAtsRUXjlqOfj8luNaR9vjCh4KeV+pg==",                                                                                                             
      "dev": true,                                                                                                                                                                                                                
      "dependencies": {                                                                                                                                                                                                           
        "is-promise": {                                                                                                                                                                                                           
          "version": "2.1.0"                                                                                                                                                                                                      
        }                                                                                                                                                                                                                         
      }                                                                                                                                                                                                                           
},

Next, rerun npm install --only=dev and you should be good.

(If using yarn, see comment #13)

akctba commented 4 years ago

package-lock.jso

but how to do it to create a new project using npx create-react-app?

alexandernst commented 4 years ago

šŸ˜‚ holy shit šŸ˜‚ JS ecosystem is just utterly broken beyond any repair.

SimonSchick commented 4 years ago

Fyi, this is on hackernews, expect a lot attention/comments/shitposting.

jcao219 commented 4 years ago

https://deno.land/ piling on the bandwagon

ava-cassiopeia commented 4 years ago

This also seems to be affecting latest on firebase-tools.

crsohr commented 4 years ago

This also seems to be affecting latest on firebase-tools.

This is affecting so many packages, this is also affecting npx eslint --init šŸ˜„

MarkKragerup commented 4 years ago

If you are on NPM, run: npm install is-promise@2.1.0 --save --save-exact

preetjdp commented 4 years ago

If you are on NPM, run: npm install is-promise@2.1.0 --save --save-exact

Does this work if a 3rd party dependency uses is-promise ?

jschuur commented 4 years ago

Does this work if a 3rd party dependency uses is-promise ?

It just did for me. inquirer needed run-async which needed is-promise.

MarkKragerup commented 4 years ago

If you are on NPM, run: npm install is-promise@2.1.0 --save --save-exact

Does this work if a 3rd party dependency uses is-promise ?

I'm unsure exactly what dependencies i have that were broken - but it was for sure more than one. It's some big projects, worked on all of them.

FdezRomero commented 4 years ago

Version 2.2.1 released: https://github.com/then/is-promise/releases/tag/2.2.1

kalepail commented 4 years ago

If you are on NPM, run: npm install is-promise@2.1.0 --save --save-exact

Didn't work for me :(

ForbesLindesay commented 4 years ago

It should now be resolved. Since there are 4 issues about this, I'm going to close this issue in favour of #20. Please comment there if 2.2.1 does not fix your issue.