As Library Usage Error - Next JS Server Side
Author: mym0404Created Mar 8, 2024Updated Nov 24, 2024
Labelsinstallation issue
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.
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;
};Source: curlconverter/curlconverter