asciidoctor / asciidoctor-vscode

AsciiDoc support for Visual Studio Code using Asciidoctor
Other
323 stars 97 forks source link

Bug on VSC on web: "binread: undefined method `binread' for File" #507

Open ioannisstavrakakis opened 2 years ago

ioannisstavrakakis commented 2 years ago

I tried the VSC on web and I get "binread: undefined method `binread' for File" and preview is not working at all. But then I delete line 18 :data-uri: and it works.

Originally posted by @ioannisstavrakakis in https://github.com/asciidoctor/asciidoctor-vscode/issues/501#issuecomment-1028072948

ggrossetie commented 2 years ago

I does work when using an URL:

:data-uri:

image::https://raw.githubusercontent.com/asciidoctor/asciidoctor-vscode/master/media/preview-light.svg[]

But it does not work when using a relative path:

:data-uri:

image::./media/preview-light.svg[]

Here's the complete stacktrace:

"binread: undefined method `binread' for File
    at Function.$$method_missing (https://asciidoctor.vscode-unpkg.net/asciidoctor/asciidoctor-vscode/2.9.3/extension/dist/browser/webpack:/asciidoctor-vscode/node_modules/@asciidoctor/core/dist/browser/asciidoctor.js:3941:1)
    at Function.method_missing_stub (https://asciidoctor.vscode-unpkg.net/asciidoctor/asciidoctor-vscode/2.9.3/extension/dist/browser/webpack:/asciidoctor-vscode/node_modules/@asciidoctor/core/dist/browser/asciidoctor.js:1313:1)
    at constructor.$$generate_data_uri (https://asciidoctor.vscode-unpkg.net/asciidoctor/asciidoctor-vscode/2.9.3/extension/dist/browser/webpack:/asciidoctor-vscode/node_modules/@asciidoctor/core/dist/browser/asciidoctor.js:25440:48)
    at constructor.$$image_uri (https://asciidoctor.vscode-unpkg.net/asciidoctor/asciidoctor-vscode/2.9.3/extension/dist/browser/webpack:/asciidoctor-vscode/node_modules/@asciidoctor/core/dist/browser/asciidoctor.js:25390:1)
    at constructor.$$convert_image (https://asciidoctor.vscode-unpkg.net/asciidoctor/asciidoctor-vscode/2.9.3/extension/dist/browser/webpack:/asciidoctor-vscode/node_modules/@asciidoctor/core/dist/browser/asciidoctor.js:37979:1)
    at eval (https://asciidoctor.vscode-unpkg.net/asciidoctor/asciidoctor-vscode/2.9.3/extension/dist/browser/webpack:/asciidoctor-vscode/node_modules/@asciidoctor/core/dist/browser/asciidoctor.js:37192:43)
    at constructor.$$convert (https://asciidoctor.vscode-unpkg.net/asciidoctor/asciidoctor-vscode/2.9.3/extension/dist/browser/webpack:/asciidoctor-vscode/node_modules/@asciidoctor/core/dist/browser/asciidoctor.js:37215:129)
    at constructor.Html5Converter.convert (https://asciidoctor.vscode-unpkg.net/asciidoctor/asciidoctor-vscode/2.9.3/extension/dist/browser/webpack:/asciidoctor-vscode/node_modules/@asciidoctor/core/dist/browser/asciidoctor.js:46819:1)
    at AsciidoctorWebViewConverter.convert (https://asciidoctor.vscode-unpkg.net/asciidoctor/asciidoctor-vscode/2.9.3/extension/dist/browser/webpack:/asciidoctor-vscode/src/asciidoctorWebViewConverter.ts:46:31)
    at constructor.$$convert (https://asciidoctor.vscode-unpkg.net/asciidoctor/asciidoctor-vscode/2.9.3/extension/dist/browser/webpack:/asciidoctor-vscode/node_modules/@asciidoctor/core/dist/browser/asciidoctor.js:25735:1)
    at $$8 (https://asciidoctor.vscode-unpkg.net/asciidoctor/asciidoctor-vscode/2.9.3/extension/dist/browser/webpack:/asciidoctor-vscode/node_modules/@asciidoctor/core/dist/browser/asciidoctor.js:25749:1)
    at Object.Opal.yield1 (https://asciidoctor.vscode-unpkg.net/asciidoctor/asciidoctor-vscode/2.9.3/extension/dist/browser/webpack:/asciidoctor-vscode/node_modules/@asciidoctor/core/dist/browser/asciidoctor.js:1455:1)
    at Array.$$collect (https://asciidoctor.vscode-unpkg.net/asciidoctor/asciidoctor-vscode/2.9.3/extension/dist/browser/webpack:/asciidoctor-vscode/node_modules/@asciidoctor/core/dist/browser/asciidoctor.js:12181:1)
    at Object.Opal.send (https://asciidoctor.vscode-unpkg.net/asciidoctor/asciidoctor-vscode/2.9.3/extension/dist/browser/webpack:/asciidoctor-vscode/node_modules/@asciidoctor/core/dist/browser/asciidoctor.js:1674:1)
    at Array.alias (https://asciidoctor.vscode-unpkg.net/asciidoctor/asciidoctor-vscode/2.9.3/extension/dist/browser/webpack:/asciidoctor-vscode/node_modules/@asciidoctor/core/dist/browser/asciidoctor.js:1864:1)
    at Opal.send (https://asciidoctor.vscode-unpkg.net/asciidoctor/asciidoctor-vscode/2.9.3/extension/dist/browser/webpack:/asciidoctor-vscode/node_modules/@asciidoctor/core/dist/browser/asciidoctor.js:1674:1)
    at constructor.$$content (https://asciidoctor.vscode-unpkg.net/asciidoctor/asciidoctor-vscode/2.9.3/extension/dist/browser/webpack:/asciidoctor-vscode/node_modules/@asciidoctor/core/dist/browser/asciidoctor.js:25742:1)
    at Opal.send (https://asciidoctor.vscode-unpkg.net/asciidoctor/asciidoctor-vscode/2.9.3/extension/dist/browser/webpack:/asciidoctor-vscode/node_modules/@asciidoctor/core/dist/browser/asciidoctor.js:1674:1)
    at constructor.$$content (https://asciidoctor.vscode-unpkg.net/asciidoctor/asciidoctor-vscode/2.9.3/extension/dist/browser/webpack:/asciidoctor-vscode/node_modules/@asciidoctor/core/dist/browser/asciidoctor.js:28441:1)
    at constructor.$$convert_document (https://asciidoctor.vscode-unpkg.net/asciidoctor/asciidoctor-vscode/2.9.3/extension/dist/browser/webpack:/asciidoctor-vscode/node_modules/@asciidoctor/core/dist/browser/asciidoctor.js:37391:1)
    at eval (https://asciidoctor.vscode-unpkg.net/asciidoctor/asciidoctor-vscode/2.9.3/extension/dist/browser/webpack:/asciidoctor-vscode/node_modules/@asciidoctor/core/dist/browser/asciidoctor.js:37211:46)
    at constructor.$$convert (https://asciidoctor.vscode-unpkg.net/asciidoctor/asciidoctor-vscode/2.9.3/extension/dist/browser/webpack:/asciidoctor-vscode/node_modules/@asciidoctor/core/dist/browser/asciidoctor.js:37215:129)
    at constructor.Html5Converter.convert (https://asciidoctor.vscode-unpkg.net/asciidoctor/asciidoctor-vscode/2.9.3/extension/dist/browser/webpack:/asciidoctor-vscode/node_modules/@asciidoctor/core/dist/browser/asciidoctor.js:46819:1)
    at AsciidoctorWebViewConverter.convert (https://asciidoctor.vscode-unpkg.net/asciidoctor/asciidoctor-vscode/2.9.3/extension/dist/browser/webpack:/asciidoctor-vscode/src/asciidoctorWebViewConverter.ts:46:31)
    at constructor.$$convert (https://asciidoctor.vscode-unpkg.net/asciidoctor/asciidoctor-vscode/2.9.3/extension/dist/browser/webpack:/asciidoctor-vscode/node_modules/@asciidoctor/core/dist/browser/asciidoctor.js:28385:1)
    at constructor.Document.convert (https://asciidoctor.vscode-unpkg.net/asciidoctor/asciidoctor-vscode/2.9.3/extension/dist/browser/webpack:/asciidoctor-vscode/node_modules/@asciidoctor/core/dist/browser/asciidoctor.js:42895:1)
    at eval (https://asciidoctor.vscode-unpkg.net/asciidoctor/asciidoctor-vscode/2.9.3/extension/dist/browser/webpack:/asciidoctor-vscode/src/asciidocParser.ts:162:37)
    at new Promise (<anonymous>)
    at AsciidocParser.eval (https://asciidoctor.vscode-unpkg.net/asciidoctor/asciidoctor-vscode/2.9.3/extension/dist/browser/webpack:/asciidoctor-vscode/src/asciidocParser.ts:35:12)
    at Generator.next (<anonymous>)
    at eval (https://asciidoctor.vscode-unpkg.net/asciidoctor/asciidoctor-vscode/2.9.3/extension/dist/browser/extension.js#vscode-extension:24925:71)
    at new Promise (<anonymous>)
    at __awaiter (https://asciidoctor.vscode-unpkg.net/asciidoctor/asciidoctor-vscode/2.9.3/extension/dist/browser/extension.js#vscode-extension:24921:12)
    at AsciidocParser.convertUsingJavascript (https://asciidoctor.vscode-unpkg.net/asciidoctor/asciidoctor-vscode/2.9.3/extension/dist/browser/extension.js#vscode-extension:24951:16)
    at AsciidocParser.eval (https://asciidoctor.vscode-unpkg.net/asciidoctor/asciidoctor-vscode/2.9.3/extension/dist/browser/webpack:/asciidoctor-vscode/src/asciidocParser.ts:349:19)
    at Generator.next (<anonymous>)
    at eval (https://asciidoctor.vscode-unpkg.net/asciidoctor/asciidoctor-vscode/2.9.3/extension/dist/browser/extension.js#vscode-extension:24925:71)
    at new Promise (<anonymous>)
    at __awaiter (https://asciidoctor.vscode-unpkg.net/asciidoctor/asciidoctor-vscode/2.9.3/extension/dist/browser/extension.js#vscode-extension:24921:12)
    at AsciidocParser.parseText (https://asciidoctor.vscode-unpkg.net/asciidoctor/asciidoctor-vscode/2.9.3/extension/dist/browser/extension.js#vscode-extension:25243:16)
    at AsciidocEngine.eval (https://asciidoctor.vscode-unpkg.net/asciidoctor/asciidoctor-vscode/2.9.3/extension/dist/browser/webpack:/asciidoctor-vscode/src/asciidocEngine.ts:63:63)
    at Generator.next (<anonymous>)
    at fulfilled (https://asciidoctor.vscode-unpkg.net/asciidoctor/asciidoctor-vscode/2.9.3/extension/dist/browser/extension.js#vscode-extension:123344:58)
ggrossetie commented 2 years ago

Since Asciidoctor.js does not support VS code virtual workspaces, we should probably disable this feature or at least add the following definition:

{
  "capabilities": {
    "virtualWorkspaces": {
      "supported": "limited",
      "description": "In virtual workspaces, resolving and finding references across files is not supported."
    }
  }
}

https://code.visualstudio.com/api/extension-guides/virtual-workspaces#partial-and-full-support-for-virtual-workspaces

For reference, include:: with a relative target does not work for the same reason.

Please note that we cannot support the vscode.workspace.fs API because Asciidoctor.js is synchronous (and does not support async code): https://code.visualstudio.com/api/references/vscode-api#FileSystem