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

As Library Usage Error - Next JS Server Side #640

Open
mym0404 opened this issue Mar 8, 2024 · 1 comment
Open

As Library Usage Error - Next JS Server Side #640

mym0404 opened this issue Mar 8, 2024 · 1 comment

Comments

@mym0404
Copy link

mym0404 commented Mar 8, 2024

Version: 4.9.0

I want to use this library in Next JS Server Side(router handler).

But loading wasm binding process seems to be broken.

Log says failed to find build/Release/tree_sitter_bash_binding.

In my node_modules, the binding file exists like this.

image

image

Is there any suggestion or is it bug really?

/Users/mj/.nvm/versions/node/v18.19.0/bin/yarn run dev
   ▲ Next.js 14.1.2
   - Local:        http://localhost:3000
   - Environments: .env.development.local, .env
   - Experiments (use at your own risk):
     · instrumentationHook

 ✓ Compiled /instrumentation in 195ms (20 modules)
 ✓ Ready in 1980ms
 ○ Compiling /curl-convert ...
 ✓ Compiled /curl-convert in 5.7s (3857 modules)
 ○ Compiling /api/curl-convert ...
 ✓ Compiled /api/curl-convert in 2s (2218 modules)
 ⚠ ./node_modules/@curlconverter/tree-sitter-bash/bindings/node/index.js
Module not found: Can't resolve '../../build/Release/tree_sitter_bash_binding' in '/Users/mj/Desktop/suited/node_modules/@curlconverter/tree-sitter-bash/bindings/node'

Import trace for requested module:
./node_modules/@curlconverter/tree-sitter-bash/bindings/node/index.js
./node_modules/curlconverter/dist/src/shell/Parser.js
./node_modules/curlconverter/dist/src/shell/tokenizer.js
./node_modules/curlconverter/dist/src/parse.js
./node_modules/curlconverter/dist/src/generators/csharp.js
./node_modules/curlconverter/dist/src/index.js
./src/app/api/curl-convert/route.ts

./node_modules/@curlconverter/tree-sitter-bash/bindings/node/index.js
Module not found: Can't resolve '../../build/Debug/tree_sitter_bash_binding' in '/Users/mj/Desktop/suited/node_modules/@curlconverter/tree-sitter-bash/bindings/node'

Import trace for requested module:
./node_modules/@curlconverter/tree-sitter-bash/bindings/node/index.js
./node_modules/curlconverter/dist/src/shell/Parser.js
./node_modules/curlconverter/dist/src/shell/tokenizer.js
./node_modules/curlconverter/dist/src/parse.js
./node_modules/curlconverter/dist/src/generators/csharp.js
./node_modules/curlconverter/dist/src/index.js
./src/app/api/curl-convert/route.ts

./node_modules/tree-sitter/index.js
Module not found: Can't resolve './build/Release/tree_sitter_runtime_binding' in '/Users/mj/Desktop/suited/node_modules/tree-sitter'

Import trace for requested module:
./node_modules/tree-sitter/index.js
./node_modules/curlconverter/dist/src/shell/Parser.js
./node_modules/curlconverter/dist/src/shell/tokenizer.js
./node_modules/curlconverter/dist/src/parse.js
./node_modules/curlconverter/dist/src/generators/csharp.js
./node_modules/curlconverter/dist/src/index.js
./src/app/api/curl-convert/route.ts

./node_modules/tree-sitter/index.js
Module not found: Can't resolve './build/Debug/tree_sitter_runtime_binding' in '/Users/mj/Desktop/suited/node_modules/tree-sitter'

Import trace for requested module:
./node_modules/tree-sitter/index.js
./node_modules/curlconverter/dist/src/shell/Parser.js
./node_modules/curlconverter/dist/src/shell/tokenizer.js
./node_modules/curlconverter/dist/src/parse.js
./node_modules/curlconverter/dist/src/generators/csharp.js
./node_modules/curlconverter/dist/src/index.js
./src/app/api/curl-convert/route.ts



Also, I was understand Server Side(node js) env doesn't require any webpack wasm copy process. Isn't it?

My next.config.mjs

const nextConfig = (phase, { defaultConfig }) => {
  /** @type {import('next').NextConfig} */
  const config = {
    ... others
  };

  if (phase === PHASE_PRODUCTION_SERVER || phase === PHASE_DEVELOPMENT_SERVER) {
    return {
      ...config,
      webpack: (config) => {
        config.module = {
          ...config.module,
          rules: [...config.module.rules, { test: /\.node$/, use: 'node-loader' }],
        };


        // config.resolve.fallback = {
        //   ...config.resolve.fallback,
        //   path: require.resolve('path-browserify'),
        //   fs: false,
        //   stream: require.resolve('stream-browserify'),
        //   util: require.resolve('util/'),
        //   url: require.resolve('url/'),
        //   querystring: require.resolve('querystring-es3'),
        //   string_decoder: require.resolve('string_decoder/'),
        //   buffer: require.resolve('buffer/'),
        // };

        config.experiments = {
          ...config.experiments,
          topLevelAwait: true,
        };

        // config.plugins = [
        //   ...config.plugins,
        //   new CopyPlugin({
        //     patterns: [
        //       'node_modules/web-tree-sitter/tree-sitter.wasm',
        //       'node_modules/curlconverter/dist/tree-sitter-bash.wasm',
        //     ],
        //   }),
        // ];

        return config;
      },
    };
  }

  return config;
};
@agniokas
Copy link

Hi, I am facing similar issue when i try to run my app in dynamic env. The issue doesn't exist while running it locally.
Have you found any solution yet to this @mym0404?

⨯ Error: Error loading shared library /app/node_modules/tree-sitter/build/Release/tree_sitter_runtime_binding.node: Exec format error
at Module._extensions..node (node:internal/modules/cjs/loader:1460:18)
at Module.load (node:internal/modules/cjs/loader:1203:32)
at Module._load (node:internal/modules/cjs/loader:1019:12)
at Module.require (node:internal/modules/cjs/loader:1231:19)
at mod.require (/app/node_modules/next/dist/server/require-hook.js:65:28)
at require (node:internal/modules/helpers:177:18)
at Object. (/app/node_modules/tree-sitter/index.js:3:13)
at Module._compile (node:internal/modules/cjs/loader:1364:14)
at Module._extensions..js (node:internal/modules/cjs/loader:1422:10)
at Module.load (node:internal/modules/cjs/loader:1203:32) {
code: 'ERR_DLOPEN_FAILED'
}

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

No branches or pull requests

3 participants