我希望能够通过解析我的NextJS Web应用程序上键入的代码来生成AST。我看到我应该使用web-tree-sitter来实现这样的事情。
我成功地使用Docker生成了tree-sitter-JavaScript.wasm文件,将其移动到与Page.tsx文件相同的目录中(我想在那里调用解析函数),并像这样加载解析器:(如他们的npm包的网站上所述)。
locateFile(scriptName: string, scriptDirectory: string) {
return scriptName;
},
});
然后像这样定义解析器和JavaScript语法,
const JavaScript = await Parser.Language.load('tree-sitter-javascript.wasm');
parser.setLanguage(JavaScript);
我收到这个错误:
./node_modules/web-tree-sitter/tree-sitter.js:1:1044
Module not found: Can't resolve 'fs'
我还在npm包的网站上读到,添加了一个webpack配置,使编译器忽略浏览器中不存在的Node的fs。我尝试通过next.js.js添加它,如下所示:
const nextConfig = {
// Other next.js config
// webpack: (config, options) => {
// config.resolve.fallback = {
// fs: false,
// }
// return config
// }
}
module.exports = nextConfig
但是,我仍然得到无法解决fs错误。
我应该做些什么不同的事情?
1条答案
按热度按时间vi4fp9gy1#
我设法让
web-tree-sitter
在我的项目上工作。以下是方法:将Webpack配置添加到
next.config.js
文件:将
tree-sitter.wasm
和tree-sitter-javascript.wasm
文件添加到public/
文件夹。这应该与最新的NextJS一起工作。下面是一个应用程序路由器(
page.tsx
)的示例:我实现这个的项目是OSS,所以你可以直接在那里查看: