GithubHelp home page GithubHelp logo

Comments (10)

tqchen avatar tqchen commented on June 16, 2024 1

make a high-level remark here. The emscripten generate module have some conditional blocks for nodejs (this is default behavior of emscripten) and it does not work well with some of the bundlers.

if (NODE_JS) {
   require(nxxxx)
} else {
   this is what is useful in ES
}

One way to address this is to write a python script that remove the block in if (NODE_JS), which should be fine as long as we are not running in nodejs.

if (NODE_JS) {. 
    throw Error("This module does not yet work on nodejs env")
} else {
   job as usual
}

from web-llm.

DiegoCao avatar DiegoCao commented on June 16, 2024

Looking into this!

from web-llm.

michellekaplan7 avatar michellekaplan7 commented on June 16, 2024

Thank you @DiegoCao! Are you able to replicate this problem? Thanks for your help!

from web-llm.

DiegoCao avatar DiegoCao commented on June 16, 2024

I've replicated the problem, will try to fix it

from web-llm.

michellekaplan7 avatar michellekaplan7 commented on June 16, 2024

I've replicated the problem, will try to fix it

@DiegoCao - Any updates on this? Thanks!

from web-llm.

ryanatkn avatar ryanatkn commented on June 16, 2024

I was able to work around this by disabling SSR. For SvelteKit this meant adding export const ssr = false; to src/routes/+layout.ts.

from web-llm.

Neet-Nestor avatar Neet-Nestor commented on June 16, 2024

I've met the same problem. This issues need to be further investigated.

from web-llm.

louis030195 avatar louis030195 commented on June 16, 2024

i just changed the next.config.js, problem solved:

/** @type {import('next').NextConfig} */
const nextConfig = {
    reactStrictMode: true,


    webpack: (config, { isServer }) => {
        // Fixes npm packages that depend on `fs` module
        if (!isServer) {
            config.resolve.fallback = {
                ...config.resolve.fallback, // if you miss it, all the other options in fallback, specified
                // by next.js will be dropped. Doesn't make much sense, but how it is
                fs: false, // the solution
                module: false,
                perf_hooks: false,
            };
        }

        return config
    },
};

export default nextConfig;

from web-llm.

Neet-Nestor avatar Neet-Nestor commented on June 16, 2024

i just changed the next.config.js, problem solved:

/** @type {import('next').NextConfig} */
const nextConfig = {
    reactStrictMode: true,


    webpack: (config, { isServer }) => {
        // Fixes npm packages that depend on `fs` module
        if (!isServer) {
            config.resolve.fallback = {
                ...config.resolve.fallback, // if you miss it, all the other options in fallback, specified
                // by next.js will be dropped. Doesn't make much sense, but how it is
                fs: false, // the solution
                module: false,
                perf_hooks: false,
            };
        }

        return config
    },
};

export default nextConfig;

This still doesn't work for me. In my case the export will throw error on npm run dev.

(node:43180) Warning: To load an ES module, set "type": "module" in the package.json or use the .mjs extension.
(Use `node --trace-warnings ...` to show where the warning was created)
/Users/neet/code/web-llm/examples/next-simple-chat/next.config.js:22
export default nextConfig;
^^^^^^

SyntaxError: Unexpected token 'export'
    at wrapSafe (node:internal/modules/cjs/loader:1389:18)
    at Module._compile (node:internal/modules/cjs/loader:1425:20)
    at Module._extensions..js (node:internal/modules/cjs/loader:1564:10)
    at Module.load (node:internal/modules/cjs/loader:1287:32)
    at Module._load (node:internal/modules/cjs/loader:1103:12)
    at cjsLoader (node:internal/modules/esm/translators:318:15)
    at ModuleWrap.<anonymous> (node:internal/modules/esm/translators:258:7)
    at ModuleJob.run (node:internal/modules/esm/module_job:262:25)
    at async ModuleLoader.import (node:internal/modules/esm/loader:474:24)
    at async loadConfig (/Users/neet/code/web-llm/examples/next-simple-chat/node_modules/next/dist/server/config.js:678:36)

And even if I add "type": "module" to package.json, the following error will still occur:

 ⨯ ReferenceError: require is not defined in ES module scope, you can use import instead
This file is being treated as an ES module because it has a '.js' file extension and '/Users/neet/code/web-llm/examples/next-simple-chat/node_modules/@mlc-ai/web-llm/package.json' contains "type": "module". To treat it as a CommonJS script, rename it to use the '.cjs' file extension.
    at file:///Users/neet/code/web-llm/examples/next-simple-chat/node_modules/@mlc-ai/web-llm/lib/index.js:4855:74
    at file:///Users/neet/code/web-llm/examples/next-simple-chat/node_modules/@mlc-ai/web-llm/lib/index.js:4867:5
    at file:///Users/neet/code/web-llm/examples/next-simple-chat/node_modules/@mlc-ai/web-llm/lib/index.js:4794:3
    at file:///Users/neet/code/web-llm/examples/next-simple-chat/node_modules/@mlc-ai/web-llm/lib/index.js:4795:3
    at file:///Users/neet/code/web-llm/examples/next-simple-chat/node_modules/@mlc-ai/web-llm/lib/index.js:5013:2
    at ModuleJob.run (node:internal/modules/esm/module_job:262:25)
    at async ModuleLoader.import (node:internal/modules/esm/loader:474:24) {
  page: '/'
}

I believe this is a bundler issue, but somehow this issue only happens to this example but not my another Next.js project. Very weird.

from web-llm.

CharlieFRuan avatar CharlieFRuan commented on June 16, 2024

This error should be addressed in npm 0.2.36. For details please see #397.

from web-llm.

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.