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

TypeError when bundling latest Parse JS SDK using VITE (the vue bundler) #1362

Closed
3 tasks done
tremendus opened this issue May 13, 2021 · 18 comments · Fixed by #2100
Closed
3 tasks done

TypeError when bundling latest Parse JS SDK using VITE (the vue bundler) #1362

tremendus opened this issue May 13, 2021 · 18 comments · Fixed by #2100
Labels
type:feature New feature or improvement of existing feature

Comments

@tremendus
Copy link

New Issue Checklist

Issue Description

When bundling Parse JS SDK client through VITE - vue's new bundler, based on snowpack - compilation fails due to an error caused in parse.

Steps to reproduce

NOTE: parse lib is imported in src/App.vue

Actual Outcome

 Uncaught TypeError: Super expression must either be null or a function
    _inherits Babel
    Subscription LiveQuerySubscription.js:149
    js LiveQuerySubscription.js:197
    __require chunk-BIJEITIM.js:6
    js LiveQueryClient.js:65
    __require chunk-BIJEITIM.js:6
    js ParseLiveQuery.js:25
    __require chunk-BIJEITIM.js:6
    js Parse.js:286
    __require chunk-BIJEITIM.js:6
    js index.js:1
    __require chunk-BIJEITIM.js:6
    <anonymous> parse:1

This is the code at 149:

var Subscription = /*#__PURE__*/function (_EventEmitter) { << 149
  (0, _inherits2.default)(Subscription, _EventEmitter);

  var _super = _createSuper(Subscription);
  // ....

Expected Outcome

I expected Parse to be bundled without error

Environment

"parse": "^3.2.0",

  • see package.json in repos for other dependencies.

Server

  • Parse Server version: - Not applicable

Database

  • System (MongoDB or Postgres): Not applicable

Client

  • Parse JS SDK version: "parse": "^3.2.0",
  • localhost on node 15.11 M1 using "vite": "^2.3.0"

Logs

No logs - see error in console

@dplewis
Copy link
Member

dplewis commented May 13, 2021

Can you try using the CDN? https://cdnjs.cloudflare.com/ajax/libs/parse/3.2.0/parse.min.js

@GormanFletcher
Copy link

GormanFletcher commented May 18, 2021

The CDN build doesn't emit the error. But having the NPM build work would be preferable, since it plays nicer with Typescript, build pipelines, etc.

I got the types to work with the CDN script by adding parse to my tsconfig.json types array.

@sidwebworks
Copy link

We got the same problem while using this in React as well, same things with Snowpack as well.

@dplewis
Copy link
Member

dplewis commented May 19, 2021

Can you try to import from the dist/minified build?
// ES6 Minimized
import Parse from 'parse/dist/parse.min.js';

@tremendus
Copy link
Author

Yes, confirm that does get bundled properly and without errors.

@GormanFletcher
Copy link

GormanFletcher commented May 19, 2021

Yep, that functions correctly, though I think I'll have to stick with the CDN approach for the moment - TypeScript doesn't know how to match that import up with the parse package types.

Edit: I got TypeScript to play nice with the minified import by adding this to my tsconfig.json compilerOptions:

"baseUrl": ".",
"paths": {"parse/dist/parse.min.js": ["node_modules/@types/parse/index.d.ts"]}

@dplewis dplewis added type:question Support or code-level question resolved labels Jun 3, 2021
@FunMiles
Copy link

I hit the same issue with SvelteKit which is based on Vite. The minified version solved the issue for me as well.

@lamualfa
Copy link

lamualfa commented Jul 4, 2021

@GormanFletcher Thank you very much for the solution.

Formatted version

{
  "compilerOptions": {
    "baseUrl": ".",
    "paths": {
      "parse/dist/parse.min": ["node_modules/@types/parse/index.d.ts"]
    }
  }
}

@0biWanKenobi
Copy link

I experienced the same issue today while migrating my Vue project to Vite. I created this minimal Codesandbox repro before finding this issue.. hope it helps. I also created a post on ParsePlatform Community with more details on what happens when the error is thrown.

@mtrezza
Copy link
Member

mtrezza commented Nov 30, 2022

@dblythy you are a vue expert, what's your opinion on this? Looks like a nuisance that should be fixed, do you have any idea about the scope of this?

@dblythy
Copy link
Member

dblythy commented Nov 30, 2022

I solved this in my projects using npm i events, however it results in the production build with vite failing.

The error was:

TypeError: (0 , _decode2.default) is not a function

This seems to possibly be an issue with Rollup and the bundled Parse JS SDK, but I’m not entirely sure. I’ll try to further isolate the issue.

I ended up using import Parse from 'parse/dist/parse.min.js';

gnu-lorien added a commit to gnu-lorien/yorick that referenced this issue Feb 5, 2023
The workaround is to use the minimized parse distribution

Issues described more fully here: parse-community/Parse-SDK-JS#1362
@westhom
Copy link

westhom commented Mar 31, 2023

Still an issue with the current version of the JS SDK.

FYI, if you are not using typescript with Vite, I got my VSCode intellisense autocomplete working by adding jsconfig.json to the project root:

{
  "compilerOptions": {
    "baseUrl": ".",
    "paths": {
      "parse/dist/parse.min.js": [
        "./node_modules/@types/parse/index.d.ts"
      ]
    }
  }
}

@mtrezza mtrezza added type:feature New feature or improvement of existing feature and removed type:question Support or code-level question labels May 29, 2023
@dblythy
Copy link
Member

dblythy commented May 30, 2023

@tremendus can you try adding this to your Vite configuration:

export default defineConfig({
  resolve: {
    alias: {
      '@': path.resolve(__dirname, '/src'),
      parse: path.resolve(__dirname, './node_modules/parse/dist/parse.min.js')
    },
  },
  ...
})

@radandevist
Copy link

I guess this is already solved since the last release (4.3.1).

@mtrezza
Copy link
Member

mtrezza commented Nov 29, 2023

So can this issue be closed?

@tiavina-mika
Copy link

Is it still not fixed 3 years later?

@westhom
Copy link

westhom commented Jan 24, 2024

This appears to have been fixed. I'm on Vite @ 5.0.8, parse @ 4.3.1.

Method 1:

// results in browser console warning, but no errors:
// parse.js?v=8db0138c:26206 Module "events" has been externalized for browser compatibility. Cannot access "events.EventEmitter" in client code. See https://vitejs.dev/guide/troubleshooting.html#module-externalized-for-b
import Parse from 'parse';

Method 2:

// no warnings or errors (for intellisense support this needs modified tsconfig.json)
import Parse from 'parse/dist/parse.min.js'

@ustad-nordin
Copy link

Still an issue with the current version of the JS SDK.

FYI, if you are not using typescript with Vite, I got my VSCode intellisense autocomplete working by adding jsconfig.json to the project root:

{
  "compilerOptions": {
    "baseUrl": ".",
    "paths": {
      "parse/dist/parse.min.js": [
        "./node_modules/@types/parse/index.d.ts"
      ]
    }
  }
}

Did the same in my SvelteKit project, solved types error 🤜🏼🤛🏼

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
type:feature New feature or improvement of existing feature
Projects
None yet
14 participants