Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Express App Crashes due to Error [ERR_PACKAGE_PATH_NOT_EXPORTED] #9573

Closed
asierbayon opened this issue Jan 7, 2024 · 6 comments
Closed

Express App Crashes due to Error [ERR_PACKAGE_PATH_NOT_EXPORTED] #9573

asierbayon opened this issue Jan 7, 2024 · 6 comments
Labels
bug Something isn't working triage Unseen or unconfirmed by a maintainer yet. Provide extra information in the meantime.

Comments

@asierbayon
Copy link

Environment

System:
OS: macOS 13.3.1
CPU: (12) x64 Intel(R) Core(TM) i7-9750H CPU @ 2.60GHz
Memory: 8.91 GB / 64.00 GB
Shell: 5.9 - /bin/zsh
Binaries:
Node: 16.19.1 - ~/.nvm/versions/node/v16.19.1/bin/node
Yarn: 1.22.10 - /usr/local/bin/yarn
npm: 8.19.3 - ~/.nvm/versions/node/v16.19.1/bin/npm
Browsers:
Brave Browser: 119.1.60.114
Chrome: 120.0.6099.129
Safari: 16.4
npmPackages:
@auth/express: ^0.1.2 => 0.1.2

Reproduction URL

https://github.com/asierbayon/auth-express-bug-demo

Describe the issue

Whenever @auth/express or even @auth/core is imported into an Express project, the following error is shown:

throw e;
      ^

Error [ERR_PACKAGE_PATH_NOT_EXPORTED]: No "exports" main defined

This happens in Typescript projects once the code is compiled and in Javascript projects too.

How to reproduce

yarn && yarn dev

Expected behavior

The app does not crash.

@asierbayon asierbayon added bug Something isn't working triage Unseen or unconfirmed by a maintainer yet. Provide extra information in the meantime. labels Jan 7, 2024
@balazsorban44
Copy link
Member

@auth/express is ESM-only, it looks like you are trying to require-ing it.

Our ESM configuration has no errors, see:

https://publint.dev/@auth/express@0.1.2

@solo8116
Copy link

solo8116 commented Jan 7, 2024

I am using typescript and sample code of the docs but the same error

Error [ERR_PACKAGE_PATH_NOT_EXPORTED]: No "exports" main defined in \node_modules\@auth\express\package.json
    at new NodeError (node:internal/errors:405:5)
    at exportsNotFound (node:internal/modules/esm/resolve:359:10)
    at packageExportsResolve (node:internal/modules/esm/resolve:639:13)
    at resolveExports (node:internal/modules/cjs/loader:567:36)
    at Function.Module._findPath (node:internal/modules/cjs/loader:636:31)
    at Function.Module._resolveFilename (node:internal/modules/cjs/loader:1063:27)
    at Function.Module._resolveFilename.sharedData.moduleResolveFilenameHook.installedValue [as _resolveFilename] (AppData\Local\npm-cache\_npx\1bf7c3c15bf47d04\node_modules\@cspotcode\source-map-support\source-map-support.js:811:30)
    at Function.Module._load (node:internal/modules/cjs/loader:922:27)
    at Module.require (node:internal/modules/cjs/loader:1143:19)
    at require (node:internal/modules/cjs/helpers:121:18) {
  code: 'ERR_PACKAGE_PATH_NOT_EXPORTED'
}

@asierbayon
Copy link
Author

@solo8116 you need to use ES Modules on your Express project.
Unfortunately, most examples you'll see online are not configured like this.

Here's what you should do if you're using Typescript:

tsconfig.json example

{
    "compilerOptions": {
        "target": "ES2022",
        "module": "ES2022",
        "lib": ["ES2022", "dom", "DOM.Iterable"],
        "allowJs": true,
        "checkJs": true,
        "outDir": "./dist",
        "rootDir": "./src",
        "removeComments": true,
        "moduleResolution": "node",
        "pretty": true,
        "experimentalDecorators": true,
        "allowSyntheticDefaultImports": true,
        "skipLibCheck": true,
        "typeRoots": ["node_modules/@types"]
    },
    "include": ["src/**/*.ts"],
    "exclude": ["node_modules"]
}

also include "type": "module" on your package.json

You'll need also to declare the file extension on every import, you can help yourself to do this enforcing it via eslint

.eslintrc

{
    "parser": "@typescript-eslint/parser",
    "extends": [
        "plugin:@typescript-eslint/recommended",
        "plugin:import/errors",
        "plugin:import/warnings",
        "plugin:import/typescript"
    ],
    "settings": {
        "import/resolver": {
            "typescript": {
                "alwaysTryTypes": true
            }
        }
    },
    "rules": {
        "import/no-unresolved": "error",
        "import/extensions": [
            "error",
            "ignorePackages",
            {
                "ts": "never",
                "tsx": "never"
            }
        ]
    }
}

Remember to install also the relevant deps to make eslint and its plugin work.

This should be enough, I hope :)

@RosePinkDragon
Copy link

RosePinkDragon commented Jan 27, 2024

nope not helping, I tried changing the ts-config and adding in the eslint config as suggested by @asierbayon still no help, I have created a minimal reproduction for prisma and express. it will be great if you take a look, please take a look at this.

I couldn't find a fix, will continue on this, i currently think it has something to do with tsconfig: ipfs github

I have tried other packages also but can't get it working all give the same error's and only in authjs rest of the packages work as they are.

also there are some same issues with different packages: #8597, #8727

edit: it's definitely a ts issue, reverting to js, fixed the issue.

@tmax22
Copy link

tmax22 commented Mar 10, 2024

I got this issue too. to anyone getting it make sure you have "type": "module" in package.json file

@moonrailgun
Copy link

i cannot upgrade my project to "type": "module". too much problem and pain.

is any other ideas?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working triage Unseen or unconfirmed by a maintainer yet. Provide extra information in the meantime.
Projects
None yet
Development

No branches or pull requests

6 participants