在更新VSCode之前,一切都很好。更新VSCode后,打开Ruby项目和Ruby语言服务器启动失败。
ldfqzlk81#
自从更新后,遇到了同样的问题。
um6iljoc2#
我现在也遇到了同样的问题:TypeError: Failed to parse URL from /home/user/.vscode-server/extensions/rebornix.ruby-0.28.1/dist/server/tree-sitter.wasmvscode 1.82.0,最新版本 https://marketplace.visualstudio.com/items?itemName=Shopify.ruby-lsp
TypeError: Failed to parse URL from /home/user/.vscode-server/extensions/rebornix.ruby-0.28.1/dist/server/tree-sitter.wasm
eulz3vhy3#
在这个问题上加1
cgfeq70w4#
这与VS Code中的通用WASM支持无关。Ruby语言服务器似乎加载了一个tree-sitter wasm文件。
qyswt5oh5#
我已经研究并在这个问题( https://qiita.com/tt4q/items/0bffdcaf877d1ca1182a )上发帖。然而,由于它是用日语写的,许多人将无法阅读它,所以我将描述主要要点。Visual Studio Code v1.82中的Electron已经升级,Node.js也已经升级。升级后的Node.js现在提供了一个 fetch API。tree-sitter.wasm似乎是用 Emscripten 构建的。Emscripten是一个生成支持多种执行环境的 .wasm 的工具,它似乎通过在运行时定义的符号来识别执行环境。不幸的是,Emscripten有一个运行时分支,表示“如果 fetch API未定义,则不是Node.js”。而且,如果不是Node.js,Emscripten将使用 fetch API加载 .wasm 。fetch API规范要求支持 http:// 和 https:// 方案。对 file:// 方案的支持不是必需的,出于安全原因,Node.js的 fetch API不支持它( nodejs/node#48554 )。然而,Emscripten将尝试通过 fetch("/path/to/tree-sitter.wasm") 加载 TypeError: Failed to parse URL from /path/to/tree-sitter.wasm 。这是导致 TypeError: Failed to parse URL from /path/to/tree-sitter.wasm 错误的原因。Emscripten已经修复了这个bug( emscripten-core/emscripten#16913 )。最好在修复bug后发布使用 Emscripten构建的 rebornix.ruby 扩展。然而, rebornix.ruby 已不再维护。我找到的解决方法是一个阻止Node.js定义 fetch API的 --no-experimental-fetch 选项。Visual Studio Code没有向Node.js传递参数的能力,所以请使用 NODE_OPTIONS 环境变量(例如 NODE_OPTIONS="--no-experimental-fetch" code . )。请注意,这种解决方法将起作用,但可能会导致依赖于Node.js提供的 fetch 的扩展停止工作。
fetch
tree-sitter.wasm
.wasm
http://
https://
file://
fetch("/path/to/tree-sitter.wasm")
TypeError: Failed to parse URL from /path/to/tree-sitter.wasm
rebornix.ruby
--no-experimental-fetch
NODE_OPTIONS
NODE_OPTIONS="--no-experimental-fetch" code .
5条答案
按热度按时间ldfqzlk81#
自从更新后,遇到了同样的问题。
um6iljoc2#
我现在也遇到了同样的问题:
TypeError: Failed to parse URL from /home/user/.vscode-server/extensions/rebornix.ruby-0.28.1/dist/server/tree-sitter.wasm
vscode 1.82.0,最新版本 https://marketplace.visualstudio.com/items?itemName=Shopify.ruby-lsp
eulz3vhy3#
在这个问题上加1
cgfeq70w4#
这与VS Code中的通用WASM支持无关。Ruby语言服务器似乎加载了一个tree-sitter wasm文件。
qyswt5oh5#
我已经研究并在这个问题( https://qiita.com/tt4q/items/0bffdcaf877d1ca1182a )上发帖。然而,由于它是用日语写的,许多人将无法阅读它,所以我将描述主要要点。
Visual Studio Code v1.82中的Electron已经升级,Node.js也已经升级。升级后的Node.js现在提供了一个
fetch
API。tree-sitter.wasm
似乎是用 Emscripten 构建的。Emscripten是一个生成支持多种执行环境的.wasm
的工具,它似乎通过在运行时定义的符号来识别执行环境。不幸的是,Emscripten有一个运行时分支,表示“如果
fetch
API未定义,则不是Node.js”。而且,如果不是Node.js,Emscripten将使用fetch
API加载.wasm
。fetch
API规范要求支持http://
和https://
方案。对file://
方案的支持不是必需的,出于安全原因,Node.js的fetch
API不支持它( nodejs/node#48554 )。然而,Emscripten将尝试通过fetch("/path/to/tree-sitter.wasm")
加载TypeError: Failed to parse URL from /path/to/tree-sitter.wasm
。这是导致TypeError: Failed to parse URL from /path/to/tree-sitter.wasm
错误的原因。Emscripten已经修复了这个bug( emscripten-core/emscripten#16913 )。最好在修复bug后发布使用 Emscripten构建的
rebornix.ruby
扩展。然而,rebornix.ruby
已不再维护。我找到的解决方法是一个阻止Node.js定义
fetch
API的--no-experimental-fetch
选项。Visual Studio Code没有向Node.js传递参数的能力,所以请使用NODE_OPTIONS
环境变量(例如NODE_OPTIONS="--no-experimental-fetch" code .
)。请注意,这种解决方法将起作用,但可能会导致依赖于Node.js提供的
fetch
的扩展停止工作。