-
Notifications
You must be signed in to change notification settings - Fork 936
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
Cannot use debug with Rollup #468
Comments
Patch welcome. I'm reluctant to say that this is Also related #438. |
@TooTallNate, hello. The code is working in Browserify because this bundler doesn't do anything fancy with code. It just wraps modules in functions to create scopes and supply them with adequate |
@StreetStrider that's a fair assessment of what's happening. But it sounds like this is probably a fixable bug in rollup-plugin-commonjs — I suspect it just doesn't know what to make of this code: exports = module.exports = require('./debug'); I've opened a related issue over there: rollup/rollup-plugin-commonjs#204 |
@Rich-Harris, if it can be fixed in plugin, that would be great, because I've been using the similar pattern in my CJS code as well. And probably other people too. It's fixable indeed, I just didn't know how much you'd go in such cases. |
Damn. Expected to make this work via usual expression splitting, something like: var base = require('./debug');
module.exports = base;
base.log = log;
// … Not working at all. The error is the same.
|
Fails for me because of that line in webpack 2 and a .babelrc with { es2015: { modules: false } }. This is probably a webpack / babel problem. |
[SOLVED]
Setting both of these to empty in webpack config sovles the issue,
but I'm not sure this is the right solution, or why webpack is looking in the Suggestions? EDIT & SOLUTION: I'm using typescript and I overwrote webpack's resolve: {
mainFields: ['main', 'types'],
}, thus overwriting the default array when targeting a web build ( |
This sounds like a bit of a configuration mistake or an error with the bundler. I've used debug personally with webpack (for Node and the browser) and browserify (for the browser). I've never seen issues like this, to be honest. @aryzing I'd love to see your webpack config if you could paste it into a gist and link it here? |
@Rich-Harris did we get a fix merged into the commonjs plugin for webpack? Or is this still outstanding? |
Of course, you've not. Webpack and browserify treat modules in old way, creating IIFE for every module. They do nothing fancy with modules itself. In contrast, Rollup built on principle of module in ES6 sence and a couple of heuristics. That heuristics are creating an issue here. This issue has nothing with webpack or browserify. This topic isn't about webpack or browserify. |
Right, I was responding to @aryzing . I haven't used Rollup, personally, but this seems a bit strange. I am wondering about what @Rich-Harris said about the commonjs plugin? |
For me I had warnings for undefined packages native to Node and solved it by shimming the modules : {
plugins: [
commonjs(),
nodeGlobals(), // required for some shims
nodeBuildins(), // the shims
]
} |
For anyone encounters this error, I have a fix for it. alias({
debug: 'node_modules/debug/dist/debug.js',
}), |
This shouldn't be necessary. I use rollup frequently and never run into issues with Debug... |
If I don't use dist version of debug, the arrow functions in src/browser will not run in IE11. |
That's not a problem with Rollup. You need to use Babel.
This doesn't make any sense. Can you explain, please? |
After separating the node and browser build, the problem no longer exists. |
@Qix- I found where the real problem is. It's babel's preset-env. When set preset-env's option |
@iFwu I have the same error and this didn't helped. Where do you place it? Can we see a sample of your configuration? |
@kopax That code should be placed in the import alias from '@rollup/plugin-alias'
module.exports = {
plugins: [
alias({ debug: 'node_modules/debug/dist/debug.js })
]
}
|
There're a troubles both using
debug
directly (viaimport debug from 'debug'
) and as a dependency to another package, with Rollup bundler.import debug from 'debug'
:I believe this is because of that dynamic stuff.
import SocketIo from 'socket.io-client'
which hasdebug
as a dependency:As far as I understood, the main idea behind
browser.js
is to import kinda «base» debug object and upgrade it with browser-specific methods' implementations. I believe this can be rewritten in more static and bundler-friendly way. Like requiring base, propagate it with methods and then export as a default in different statements which would simplify the analysis by Rollup and other-like.I'm not an active
debug
user, butdebug
is very popular tool, so many of my packages' of choice using it as a dependency. So I stumble upon it when bundling, from time to time. Leveraging any workarounds is diffcult, since I do not have precision control over dependencies of my dependencies.The text was updated successfully, but these errors were encountered: