is-promise: ERR_INVALID_PACKAGE_TARGET

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'
}

About this issue

  • Original URL
  • State: closed
  • Created 4 years ago
  • Reactions: 29
  • Comments: 24 (2 by maintainers)

Commits related to this issue

Most upvoted comments

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

😂 holy shit 😂 JS ecosystem is just utterly broken beyond any repair.

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?

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 👍

so this is resolved?

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

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

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.

package-lock.jso

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

Nope, and it’s broken serverless for me 😦

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

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)