Code Monkey home page Code Monkey logo

Comments (11)

dcousens avatar dcousens commented on July 19, 2024 1

Can't we all just get along.

@JedWatson can we just export like normal, but then just recommend people to use a wrapper that does it properly for them?
In the end, this is a node package.

IMHO, anyway.

from classnames.

JedWatson avatar JedWatson commented on July 19, 2024

@kevinsimper can you please clarify what you mean by "broke"? and how it should behave in that case?

Looks to me like fixing this might be as simple as putting this condition first:

if (typeof module !== 'undefined' && module.exports)

from classnames.

daviferreira avatar daviferreira commented on July 19, 2024

I'm also curious about what broke means here, this is just a very common wrapper, used everywhere. And I'm also curious about the scenario of having both amd and commonjs on the same page.

Cheers!

from classnames.

kevinsimper avatar kevinsimper commented on July 19, 2024

If you are on a webpage where you both have requirejs and use browserify, then the module.exports will never run and therefore the browserify version will not work.

Because both amd and module can be defined on the same page. So the else if prohibites the use of both.

I can agree that it is stupid to use both on the same page, but sometimes its something you can not decide.

from classnames.

JedWatson avatar JedWatson commented on July 19, 2024

@kevinsimper can you confirm whether my proposed change would work, or would you expect it to expose both CommonJS and AMD? A PR that you've confirmed meets your requirements would be welcome.

from classnames.

dcocchia avatar dcocchia commented on July 19, 2024

I'm seeing this issue when using react-boostrap, which includes classnames as a dependency. I'm also using browserify and babelify to bundle.

Uncaught Error: Mismatched anonymous define() module: function () {
return classNames;
}

This is fixed by flipping the conditions, as @JedWatson suggests:

if (typeof module !== 'undefined' && module.exports) { module.exports = classNames; } else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) { // AMD. Register as an anonymous module. define(function () { return classNames; }); } else { window.classNames = classNames; }

from classnames.

rickychien avatar rickychien commented on July 19, 2024

I ran into the same problem after #41 merged (v2.1.3), but it works in v2.1.2. My use case is using requirejs but I saw classnames always run in module.export at
https://github.com/JedWatson/classnames/blob/master/index.js#L38

therefore, it doesn't execute second AMD statement and return undefined every time.

from classnames.

daviferreira avatar daviferreira commented on July 19, 2024

Sorry, @JedWatson ❤️

from classnames.

yordis avatar yordis commented on July 19, 2024

@JedWatson is this fixed and published?

from classnames.

nilocoelhojunior avatar nilocoelhojunior commented on July 19, 2024

I download bower classnames today:

### dedupe.js, start line 88

if (typeof module !== 'undefined' && module.exports) {
        console.log("undefined");
        module.exports = classNames;
    } else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {
        // register as 'classnames', consistent with npm package name
        define('classnames', [], function () {
            return classNames;
        });
    } else {
        console.log("window")
        window.classNames = classNames;
    }

made the change suggested by @dcocchia and it worked

if (typeof module !== 'undefined' && module.exports) {
        console.log("undefined");
        module.exports = classNames;
    } else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {
        // register as 'classnames', consistent with npm package name
        define(function () {
            return classNames;
        });
    } else {
        console.log("window")
        window.classNames = classNames;
    }

from classnames.

dcousens avatar dcousens commented on July 19, 2024

I'm assuming this was resolved, please comment if otherwise.

from classnames.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.