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 <[email protected]>"
],
"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"
}
}
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
I’ll take a look this weekend, thanks for finding & reporting!
On Fri, Mar 1, 2019 at 7:27 PM Jordan Last notifications@github.com wrote:
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—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/pikapkg/web/issues/2#issuecomment-468878567, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AAl-k8Zr_W2V9sBXGsaTC27d2mRxPNPwks5vSe-qgaJpZM4baJHg
.
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.
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?
Tracking a fix for this here: https://github.com/pikapkg/web/pull/6
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.
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": [ ... ] })
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)
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 :+1:
lol did I add support for that and never document it??? 🤦♂ @zaygraveyard Glad it worked for you, adding some documetation to the README now!
(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)
Most helpful comment
I’ll take a look this weekend, thanks for finding & reporting!
On Fri, Mar 1, 2019 at 7:27 PM Jordan Last notifications@github.com wrote: