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

It never finishes installing #2

Closed
lastmjs opened this issue Mar 2, 2019 · 11 comments · Fixed by #3170
Closed

It never finishes installing #2

lastmjs opened this issue Mar 2, 2019 · 11 comments · Fixed by #3170

Comments

@lastmjs
Copy link

lastmjs commented Mar 2, 2019

Running npx @pika/web with this package.json never finishes:

{
  "name": "podcrypt",
  "version": "0.0.0",
  "description": "Progressive Web DApp for podcasts",
  "engines": {
    "node": "10.7.0"
  },
  "scripts": {
    "start": "zwitterion",
    "build": "zwitterion --build-static --exclude node_modules --include functional-element,redux/es"
  },
  "repository": {
    "type": "git",
    "url": "git+https://github.com/lastmjs/podcrypt.git"
  },
  "license": "MIT",
  "bugs": {
    "url": "https://github.com/lastmjs/podcrypt/issues"
  },
  "homepage": "https://github.com/lastmjs/podcrypt#readme",
  "contributors": [
    "Jordan Last <jordan.michael.last@gmail.com>"
  ],
  "devDependencies": {
    "@pika/web": "^0.2.0",
    "jsverify-es-module": "0.0.2",
    "zwitterion": "0.28.1"
  },
  "dependencies": {
    "functional-element": "0.0.12",
    "idb-keyval": "3.1.0",
    "redux": "4.0.1",
    "rss-parser": "3.6.2",
    "web3": "1.0.0-beta.47",
    "web3-providers-es-module": "0.0.0"
  }
}

@lastmjs
Copy link
Author

lastmjs commented Mar 2, 2019

You could even just try it on a project with this one dependency: https://www.npmjs.com/package/web3. That's all I really want to get working, it's being difficult with my other build processes

@FredKSchott
Copy link
Owner

FredKSchott commented Mar 2, 2019 via email

@FredKSchott
Copy link
Owner

Okay so good news: so I was able to reproduce this in a project with web3, and created #5 as a result of a bug found.

The bad news is that web3 relies on some '.node' C++ compiled files that work on Node.js but would never run natively on the web. The fact that it never finishes looks like it may be a bug in either Rollup or the CJS plugin that we use for Rollup. We should definitely warn instead of hanging.

@lastmjs
Copy link
Author

lastmjs commented Mar 3, 2019

Nice. This is the trick part about these kinds of build tools, you have to bundle in browser versions of the dependencies. For example, there are some projects called http-browserify, http-browserify, etc that offer browser compatible versions of the built-in node modules...unless I'm not understanding? If not, could Wasm binaries of those modules be made to ship up to the browser?

@FredKSchott
Copy link
Owner

Tracking a fix for this here: #6

@lastmjs
Copy link
Author

lastmjs commented Mar 6, 2019

Web3 also has UMD bundles in its dist folder, I believe most of its direct dependencies do as well. If you rollup and point to the UMD build as the entry point, I wonder how that would work. I'll try it in the next couple days and report.

@FredKSchott
Copy link
Owner

I'd like @pika/web to stay focused on being an ESM installer, but no reason we couldn't have some sort sort of secondary opt-in UMD support (stupid example: "@pika/web": { "umdDependencies": [ ... ] })

@zaygraveyard
Copy link
Contributor

This also happens for preact-compat
I get the following error and then @pika/web continues indefinitely:

Error when using sourcemap for reporting an error: Can't resolve original location of error.
Error: 'h' is not exported by node_modules/preact/dist/preact.umd.js
    at error (/path/node_modules/rollup/dist/rollup.js:9435:30)
    at Module.error (/path/node_modules/rollup/dist/rollup.js:13407:9)
    at handleMissingExport (/path/node_modules/rollup/dist/rollup.js:13327:21)
    at Module.traceVariable (/path/node_modules/rollup/dist/rollup.js:13712:17)
    at ModuleScope.findVariable (/path/node_modules/rollup/dist/rollup.js:12422:39)
    at Identifier$1.bind (/path/node_modules/rollup/dist/rollup.js:8348:40)
    at CallExpression$1.bind (/path/node_modules/rollup/dist/rollup.js:7977:23)
    at CallExpression$1.bind (/path/node_modules/rollup/dist/rollup.js:10377:15)
    at MemberExpression.bind (/path/node_modules/rollup/dist/rollup.js:7977:23)
    at MemberExpression.bind (/path/node_modules/rollup/dist/rollup.js:11358:19)

@zaygraveyard
Copy link
Contributor

Solved the problem by adding the following to "@pika/web" package.json field

    "namedExports": {
      "node_modules/preact/dist/preact.umd.js": [
        "Component",
        "cloneElement",
        "createElement",
        "createRef",
        "h",
        "options",
        "render",
        "rerender"
      ],
      "node_modules/preact-context/dist/context.min.js": [
        "createContext"
      ]
    },

Thank you for this amazing tool 👍

@FredKSchott
Copy link
Owner

lol did I add support for that and never document it??? 🤦‍♂ @zaygraveyard Glad it worked for you, adding some documetation to the README now!

@FredKSchott
Copy link
Owner

(You shouldn't see any issues with Preact tho... that's not good. Maybe "module" should take precedence over "browser" again now that we have support for deep-requesting files inside of packages)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants