GMOD / jbrowse-components

Source code for JBrowse 2, a modern React-based genome browser
https://jbrowse.org/jb2
Apache License 2.0
206 stars 62 forks source link

build error in BigBedAdapter #3612

Closed Lilas-w closed 1 year ago

Lilas-w commented 1 year ago

Describe the bug

yarn build command fails.

To Reproduce

  1. run yarn install
  2. run yarn start and everything works fine in the local environment
  3. run yarn build

Expected behavior

I want to build a new version of jbrowse-web.

Terminal Output

src/BigBedAdapter/BigBedAdapter.ts:75:11 - error TS2345: Argument of type 'import("/Users/username/Documents/jbrowse/jbrowse-components/node_modules/rxjs/dist/types/internal/types").OperatorFunction<import("/Users/username/Documents/jbrowse/jbrowse-components/node_modules/@gmod/bbi/dist/bbi").Feature[], import("/Users/username/Documents/jbrowse/jbrowse-components/node_modules/@gmod/bbi/dist/bbi").Feature>' is not assignable to parameter of type 'import("/Users/username/Documents/jbrowse/jbrowse-components/node_modules/@gmod/bbi/node_modules/rxjs/dist/types/internal/types").OperatorFunction<import("/Users/username/Documents/jbrowse/jbrowse-components/node_modules/@gmod/bbi/dist/bbi").Feature[], import("/Users/username/Documents/jbrowse/jbrowse-components/node_modules/@gmod...'.
  Types of parameters 'source' and 'source' are incompatible.
    Type 'import("/Users/username/Documents/jbrowse/jbrowse-components/node_modules/@gmod/bbi/node_modules/rxjs/dist/types/internal/Observable").Observable<import("/Users/username/Documents/jbrowse/jbrowse-components/node_modules/@gmod/bbi/dist/bbi").Feature[]>' is not assignable to type 'import("/Users/username/Documents/jbrowse/jbrowse-components/node_modules/rxjs/dist/types/internal/Observable").Observable<import("/Users/username/Documents/jbrowse/jbrowse-components/node_modules/@gmod/bbi/dist/bbi").Feature[]>'.
      Types of property 'source' are incompatible.
        Type 'import("/Users/username/Documents/jbrowse/jbrowse-components/node_modules/@gmod/bbi/node_modules/rxjs/dist/types/internal/Observable").Observable<any> | undefined' is not assignable to type 'import("/Users/username/Documents/jbrowse/jbrowse-components/node_modules/rxjs/dist/types/internal/Observable").Observable<any> | undefined'.
          Type 'import("/Users/username/Documents/jbrowse/jbrowse-components/node_modules/@gmod/bbi/node_modules/rxjs/dist/types/internal/Observable").Observable<any>' is not assignable to type 'import("/Users/username/Documents/jbrowse/jbrowse-components/node_modules/rxjs/dist/types/internal/Observable").Observable<any>'.
            Types of property 'operator' are incompatible.
              Type 'import("/Users/username/Documents/jbrowse/jbrowse-components/node_modules/@gmod/bbi/node_modules/rxjs/dist/types/internal/Operator").Operator<any, any> | undefined' is not assignable to type 'import("/Users/username/Documents/jbrowse/jbrowse-components/node_modules/rxjs/dist/types/internal/Operator").Operator<any, any> | undefined'.
                Type 'import("/Users/username/Documents/jbrowse/jbrowse-components/node_modules/@gmod/bbi/node_modules/rxjs/dist/types/internal/Operator").Operator<any, any>' is not assignable to type 'import("/Users/username/Documents/jbrowse/jbrowse-components/node_modules/rxjs/dist/types/internal/Operator").Operator<any, any>'.
                  Types of property 'call' are incompatible.
                    Type '(subscriber: import("/Users/username/Documents/jbrowse/jbrowse-components/node_modules/@gmod/bbi/node_modules/rxjs/dist/types/internal/Subscriber").Subscriber<any>, source: any) => import("/Users/username/Documents/jbrowse/jbrowse-components/node_modules/@gmod/bbi/node_modules/rxjs/dist/types/internal/types").TeardownLogic' is not assignable to type '(subscriber: import("/Users/username/Documents/jbrowse/jbrowse-components/node_modules/rxjs/dist/types/internal/Subscriber").Subscriber<any>, source: any) => import("/Users/username/Documents/jbrowse/jbrowse-components/node_modules/rxjs/dist/types/internal/types").TeardownLogic'.
                      Types of parameters 'subscriber' and 'subscriber' are incompatible.
                        Type 'import("/Users/username/Documents/jbrowse/jbrowse-components/node_modules/rxjs/dist/types/internal/Subscriber").Subscriber<any>' is not assignable to type 'import("/Users/username/Documents/jbrowse/jbrowse-components/node_modules/@gmod/bbi/node_modules/rxjs/dist/types/internal/Subscriber").Subscriber<any>'.
                          Property 'isStopped' is protected but type 'Subscriber<T>' is not a class derived from 'Subscriber<T>'.

75           mergeAll(),
             ~~~~~~~~~~

Found 1 error.

error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
ERROR: "build:esm" exited with 1.
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/pack for documentation about this command.
lerna ERR! yarn pack exited 1 in '@jbrowse/plugin-bed'
lerna ERR! yarn pack exited 1 in '@jbrowse/plugin-bed'
lerna WARN complete Waiting for 8 child processes to exit. CTRL-C to exit immediately.
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
$ tsc --build tsconfig.build.es5.json

Version:

version: 2.4.1(latest code) browser: Chrome system: MacOS & Windows

Additional context

Can you give some suggestions?

cmdcolin commented 1 year ago

can you try deleting the node_modules directory entirely and then re-running yarn

Lilas-w commented 1 year ago

I tried, but still got a build error. Actually, the problem was already present before running yarn build. I am not familiar with RxJS and mergeAll(), so I don't know how to fix it. Can you give me some advice?

Argument of type 'import("/Users/username/Documents/jbrowse/jbrowse-components/node_modules/rxjs/dist/types/internal/types").OperatorFunction<import("/Users/username/Documents/jbrowse/jbrowse-components/node_modules/@gmod/bbi/dist/bbi").Feature[], import("/Users/username/Documents/jbrowse/jbrowse-components/node_modules/@gmod/bbi/dist/bbi").Feature>' is not assignable to parameter of type 'import("/Users/username/Documents/jbrowse/jbrowse-components/node_modules/@gmod/bbi/node_modules/rxjs/dist/types/internal/types").OperatorFunction<import("/Users/username/Documents/jbrowse/jbrowse-components/node_modules/@gmod/bbi/dist/bbi").Feature[], import("/Users/username/Documents/jbrowse/jbrowse-components/node_modules/@gmod...'.
  Types of parameters 'source' and 'source' are incompatible.
    Type 'import("/Users/username/Documents/jbrowse/jbrowse-components/node_modules/@gmod/bbi/node_modules/rxjs/dist/types/internal/Observable").Observable<import("/Users/username/Documents/jbrowse/jbrowse-components/node_modules/@gmod/bbi/dist/bbi").Feature[]>' is not assignable to type 'import("/Users/username/Documents/jbrowse/jbrowse-components/node_modules/rxjs/dist/types/internal/Observable").Observable<import("/Users/username/Documents/jbrowse/jbrowse-components/node_modules/@gmod/bbi/dist/bbi").Feature[]>'.
      Types of property 'source' are incompatible.
        Type 'import("/Users/username/Documents/jbrowse/jbrowse-components/node_modules/@gmod/bbi/node_modules/rxjs/dist/types/internal/Observable").Observable<any> | undefined' is not assignable to type 'import("/Users/username/Documents/jbrowse/jbrowse-components/node_modules/rxjs/dist/types/internal/Observable").Observable<any> | undefined'.
          Type 'import("/Users/username/Documents/jbrowse/jbrowse-components/node_modules/@gmod/bbi/node_modules/rxjs/dist/types/internal/Observable").Observable<any>' is not assignable to type 'import("/Users/username/Documents/jbrowse/jbrowse-components/node_modules/rxjs/dist/types/internal/Observable").Observable<any>'.
            Types of property 'operator' are incompatible.
              Type 'import("/Users/username/Documents/jbrowse/jbrowse-components/node_modules/@gmod/bbi/node_modules/rxjs/dist/types/internal/Operator").Operator<any, any> | undefined' is not assignable to type 'import("/Users/username/Documents/jbrowse/jbrowse-components/node_modules/rxjs/dist/types/internal/Operator").Operator<any, any> | undefined'.
                Type 'import("/Users/username/Documents/jbrowse/jbrowse-components/node_modules/@gmod/bbi/node_modules/rxjs/dist/types/internal/Operator").Operator<any, any>' is not assignable to type 'import("/Users/username/Documents/jbrowse/jbrowse-components/node_modules/rxjs/dist/types/internal/Operator").Operator<any, any>'.
                  Types of property 'call' are incompatible.
                    Type '(subscriber: import("/Users/username/Documents/jbrowse/jbrowse-components/node_modules/@gmod/bbi/node_modules/rxjs/dist/types/internal/Subscriber").Subscriber<any>, source: any) => import("/Users/username/Documents/jbrowse/jbrowse-components/node_modules/@gmod/bbi/node_modules/rxjs/dist/types/internal/types").TeardownLogic' is not assignable to type '(subscriber: import("/Users/username/Documents/jbrowse/jbrowse-components/node_modules/rxjs/dist/types/internal/Subscriber").Subscriber<any>, source: any) => import("/Users/username/Documents/jbrowse/jbrowse-components/node_modules/rxjs/dist/types/internal/types").TeardownLogic'.
                      Types of parameters 'subscriber' and 'subscriber' are incompatible.
                        Type 'import("/Users/username/Documents/jbrowse/jbrowse-components/node_modules/rxjs/dist/types/internal/Subscriber").Subscriber<any>' is not assignable to type 'import("/Users/username/Documents/jbrowse/jbrowse-components/node_modules/@gmod/bbi/node_modules/rxjs/dist/types/internal/Subscriber").Subscriber<any>'.
                          Property 'isStopped' is protected but type 'Subscriber<T>' is not a class derived from 'Subscriber<T>'.
cmdcolin commented 1 year ago

i checked out https://github.com/Lilas-w/jbrowse-components/tree/dev0.2 and was able to run a yarn build without any issue at commit 0e570f7

cmdcolin commented 1 year ago

the error is generally due to different rxjs versions being used between the jbrowse codebase and the bbi-js codebase. the bbi-js codebase takes care to avoid mismatching from happening, doing a major version bump when it upgraded to rxjs 7 https://github.com/GMOD/bbi-js/blob/master/CHANGELOG.md

if you are trying to update your jbrowse-components repo to the latest, run yarn why rxjs to see what rxjs is used, it should say the same for the jbrowse parts of the code and @gmod/bbi. in the latest code, both bbi-js and the jbrowse code reports rxjs7.x. in previous, both should say rxjs 6.x

we upgraded to rxjs 7 in ~jan this year (https://github.com/GMOD/jbrowse-components/pull/3447) and so now yarn why rxjs should just list rxjs 7

yarn why v1.22.19
[1/4] Why do we have the module "rxjs"...?
[2/4] Initialising dependency graph...
[3/4] Finding dependency...
[4/4] Calculating file sizes...
=> Found "rxjs@7.8.0"
info Has been hoisted to "rxjs"
info Reasons this module exists
   - "workspace-aggregator-2706beee-5185-4bfb-90c3-e21847bcba0f" depends on it
   - Specified in "devDependencies"
   - Hoisted from "_project_#rxjs"
   - Hoisted from "_project_#@jbrowse#desktop#rxjs"
   - Hoisted from "_project_#@jbrowse#react-circular-genome-view#rxjs"
   - Hoisted from "_project_#@jbrowse#react-linear-genome-view#rxjs"
   - Hoisted from "_project_#@jbrowse#web#rxjs"
   - Hoisted from "_project_#lerna#inquirer#rxjs"
   - Hoisted from "_project_#@jbrowse#plugin-bed#@gmod#bbi#rxjs"
   - Hoisted from "_project_#@jbrowse#desktop#electron-updater#typed-emitter#rxjs"
info Disk size without dependencies: "17.07MB"
info Disk size with unique dependencies: "17.16MB"
info Disk size with transitive dependencies: "17.16MB"
info Number of shared dependencies: 1
Done in 0.98s.
Lilas-w commented 1 year ago

I tried running yarn why rxjs and found the version to be "rxjs@7.6.0". However, the build error persisted. To resolve the issue, I deleted the local jbrowse-components, re-cloned it, and ran yarn and yarn build. The build error changed to a warning. Although I did not get the .tgz folder in jbrowse-web, I gzipped the build folder and it worked when deployed.

Lilas-w commented 1 year ago

I updated the code to version 2.4.2. However, when I ran yarn build under the "jbrowse-components" category, I could only build the branch main (original code) successfully with warnings. In the branch dev0.2 (my code), the build error persisted even after I deleted the local codebase and re-cloning it. Until I changed the category to "jbrowse-web" in the branch dev0.2, the build error changed to a warning.

cmdcolin commented 1 year ago

@Lilas-w if you are only trying to create builds of the 'jbrowse-web' product, running yarn build in the products/jbrowse-web folder should be fine. performing a the 'full repo build' (yarn build in the root directory) is not generally needed. we do run yarn build in our CI.

if you think the error is reproducible, I can definitely check it out though

Lilas-w commented 1 year ago

To reproduce

  1. git clone https://github.com/Lilas-w/jbrowse-components.git
  2. cd jbrowse-components
  3. git checkout dev0.2
  4. yarn install
  5. yarn build

Terminal output

src/BigBedAdapter/BigBedAdapter.ts:75:11 - error TS2345: Argument of type 'import("/Users/username/Documents/jbrowse/jbrowse-components/node_modules/rxjs/dist/types/internal/types").OperatorFunction<import("/Users/username/Documents/jbrowse/jbrowse-components/node_modules/@gmod/bbi/dist/bbi").Feature[], import("/Users/username/Documents/jbrowse/jbrowse-components/node_modules/@gmod/bbi/dist/bbi").Feature>' is not assignable to parameter of type 'import("/Users/username/Documents/jbrowse/jbrowse-components/node_modules/@gmod/bbi/node_modules/rxjs/dist/types/internal/types").OperatorFunction<import("/Users/username/Documents/jbrowse/jbrowse-components/node_modules/@gmod/bbi/dist/bbi").Feature[], import("/Users/username/Documents/jbrowse/jbrowse-components/node_modules/@gmod...'.
  Types of parameters 'source' and 'source' are incompatible.
    Type 'import("/Users/username/Documents/jbrowse/jbrowse-components/node_modules/@gmod/bbi/node_modules/rxjs/dist/types/internal/Observable").Observable<import("/Users/username/Documents/jbrowse/jbrowse-components/node_modules/@gmod/bbi/dist/bbi").Feature[]>' is not assignable to type 'import("/Users/username/Documents/jbrowse/jbrowse-components/node_modules/rxjs/dist/types/internal/Observable").Observable<import("/Users/username/Documents/jbrowse/jbrowse-components/node_modules/@gmod/bbi/dist/bbi").Feature[]>'.
      Types of property 'source' are incompatible.
        Type 'import("/Users/username/Documents/jbrowse/jbrowse-components/node_modules/@gmod/bbi/node_modules/rxjs/dist/types/internal/Observable").Observable<any> | undefined' is not assignable to type 'import("/Users/username/Documents/jbrowse/jbrowse-components/node_modules/rxjs/dist/types/internal/Observable").Observable<any> | undefined'.
          Type 'import("/Users/username/Documents/jbrowse/jbrowse-components/node_modules/@gmod/bbi/node_modules/rxjs/dist/types/internal/Observable").Observable<any>' is not assignable to type 'import("/Users/username/Documents/jbrowse/jbrowse-components/node_modules/rxjs/dist/types/internal/Observable").Observable<any>'.
            Types of property 'operator' are incompatible.
              Type 'import("/Users/username/Documents/jbrowse/jbrowse-components/node_modules/@gmod/bbi/node_modules/rxjs/dist/types/internal/Operator").Operator<any, any> | undefined' is not assignable to type 'import("/Users/username/Documents/jbrowse/jbrowse-components/node_modules/rxjs/dist/types/internal/Operator").Operator<any, any> | undefined'.
                Type 'import("/Users/username/Documents/jbrowse/jbrowse-components/node_modules/@gmod/bbi/node_modules/rxjs/dist/types/internal/Operator").Operator<any, any>' is not assignable to type 'import("/Users/username/Documents/jbrowse/jbrowse-components/node_modules/rxjs/dist/types/internal/Operator").Operator<any, any>'.
                  Types of property 'call' are incompatible.
                    Type '(subscriber: import("/Users/username/Documents/jbrowse/jbrowse-components/node_modules/@gmod/bbi/node_modules/rxjs/dist/types/internal/Subscriber").Subscriber<any>, source: any) => import("/Users/username/Documents/jbrowse/jbrowse-components/node_modules/@gmod/bbi/node_modules/rxjs/dist/types/internal/types").TeardownLogic' is not assignable to type '(subscriber: import("/Users/username/Documents/jbrowse/jbrowse-components/node_modules/rxjs/dist/types/internal/Subscriber").Subscriber<any>, source: any) => import("/Users/username/Documents/jbrowse/jbrowse-components/node_modules/rxjs/dist/types/internal/types").TeardownLogic'.
                      Types of parameters 'subscriber' and 'subscriber' are incompatible.
                        Type 'import("/Users/username/Documents/jbrowse/jbrowse-components/node_modules/rxjs/dist/types/internal/Subscriber").Subscriber<any>' is not assignable to type 'import("/Users/username/Documents/jbrowse/jbrowse-components/node_modules/@gmod/bbi/node_modules/rxjs/dist/types/internal/Subscriber").Subscriber<any>'.
                          Property 'isStopped' is protected but type 'Subscriber<T>' is not a class derived from 'Subscriber<T>'.

75           mergeAll(),
             ~~~~~~~~~~

Found 1 error.

error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
ERROR: "build:esm" exited with 1.
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/pack for documentation about this command.
lerna ERR! yarn pack exited 1 in '@jbrowse/plugin-bed'
lerna ERR! yarn pack exited 1 in '@jbrowse/plugin-bed'
lerna WARN complete Waiting for 8 child processes to exit. CTRL-C to exit immediately.
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
$ tsc --build tsconfig.build.es5.json