Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

anaconda上でのVScodeのエラーの対策

解決したいこと

indows11上で、Anaconda環境でVScodeを使っています。
アプリは、Python+sqlite3で開発しています。Powershellは、7.3.0にvup済みです。
いつのころからか、VScode起動時にエラーが出るようになり、「Node関係のPathの問題」というような赤字のメッセージが出ていました。Node.jsをインストールすると直ったというだれかのレポートをみて、terminal上でNode.js v18.12.1をインストールしたところ、下記のようなメッセージが代わりに出るようになりました。エラーマークと思われる[^]はrequireの直後の()内の最初の\についているのですが、同じような表現はいろいろなところにあるので、間違いとも思えません。その下のSyntaxError以下のコメントも、自分で書いたプログラムではないので、どこの何に問題があるのかもわかりません。
 原因と対策を教えていただければありがたいです。
(NOde.jsをアプリとして使用する予定はないので削除は可能です。)

以下,VScode上のTerminal画面の表示 detect node runtime動作

PS D:\JOB_erea\XXXX> node -e 'require("fs").writeFileSync("C:\Users\xxxx\AppData\Local\vscode-sqltools\Data\.node-runtime", process.execPath)' && $(exit 0)
[eval]:1
require("fs").writeFileSync("C:\Users\xxxx\AppData\Local\vscode-sqltools\Data\.node-runtime", process.execPath)
^

SyntaxError: Invalid or unexpected token
at new Script (node:vm:100:7)
at createScript (node:vm:265:10)
at Object.runInThisContext (node:vm:313:10)
at node:internal/process/execution:79:19
at [eval]-wrapper:6:22
at evalScript (node:internal/process/execution:78:60)
at node:internal/main/eval_string:28:3

Node.js v18.12.1ここに解決したい内容を記載してください。

該当するソースコード

開発中のコードを表示しなくても出るので、アプリは無関係と考えています。

自分で試したこと

Node.jsのインストール実施で動作が変わった。
今のところ、動作の実害はないように思えます。ただ、sql-toolsの動作についての可否は判断できていません。
sql-toolsのバージョン変更(V0.25.1とv0.26.0)や再インストールでは解決しませんでした。

1

1Answer

Node.jsを一旦、removeしてから再度installして切り分けしてはどうでしょう。

process.execPath は ”C:\Program Files\nodejs\node.exe” のようなもの?を

 .node-runtime にrequire("fs").writeFileSyncにてロードする際、SyntaxError: Invalid or unexpected token at new Script と言うjavascriptの構文エラーが発生してるようにみうけられます。

PS > node -e 'require("fs")・・・

のプロンプトからAnacondaか?VScodeか?起動時にNode.jsのライブラリーをロードしている。と考えられます。

process.execPath には node.exeの本体のパスですので、何故自分で自分の本体の所在を知る必要があるのか?謎が深まるばかりです。

[eval]-wrapper

内部でロードしたコードをラッピングしているが64bitを32bitに戻してエラーになっているなら、Anacondaは64bitなのだろうか?

方向性: 起動時にNode.jsのライブラリーをロードさせない。

p.s. コード内の 100点 は何が置き換わったの?

:100:
:50: :0: 50点 0点はないのか?

0Like

Comments

  1. @teraotakahiro1

    Questioner

    回答寄せていただいた方ありがとうございます。
    #作業1
    Node.js 一旦removeというか、Windowsからアンインストールしました。
    結果、下記のように元の赤字のエラーメッセージが出るようになりました。
     ただ、同時にメッセージウインドウが出ていたのが出なくなりました。
    (メッセージウインドウの内容は保存できていないので、レポート不能です。)

    PS C:\Python\Flask-web> node -e 'require(\"fs\").writeFileSync(\"C:\\Users\\xxxx\\AppData\\Local\\vscode-sqltools\\Data\\.node-runtime\", process.execPath)' && $(exit 0)
    node: The term 'node' is not recognized as a name of a cmdlet, function, script file, or executable program.
    Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
    PS C:\Python\Flask-web>
    (アプリは、開発環境を変えてFlask対応のサンプルアプリになっています。)
    #作業2
    Node.jsをAnaconda環境でインストールできるようなので、Applyしてみました。
    すると、まだ質問時にレポートした画面が出た後、
    次のプロンプトで、赤字の画面がプロンプトの後に出るようになりました。(detect node runtimeリトライ?)
    detect node runtimeコマンドが3回目でて、その反応はプロンプトだけで、何も表示しませんでした。(正常?)
    Node.jsは、V18.12.1でもV18.11.0でも変わらず
    ※ 100点は、コロンに挟まれたただの:100:です。
    再送します。 「at [eval]-wrapper:6:22」は太字
    PS C:\Python\Flask-web> node -e 'require(\"fs\").writeFileSync(\"C:\\Users\\xxxx\\AppData\\Local\\vscode-sqltools\\Data\\.node-runtime\", process.execPath)' && $(exit 0)
    [eval]:1
    require(\"fs\").writeFileSync(\"C:\\Users\\xxxx\\AppData\\Local\\vscode-sqltools\\Data\\.node-runtime\", process.execPath)
    ^

    SyntaxError: Invalid or unexpected token
    at new Script (node:vm:100:7)
    at createScript (node:vm:265:10)
    at Object.runInThisContext (node:vm:313:10)
    at node:internal/process/execution:79:19
    at [eval]-wrapper:6:22
    at evalScript (node:internal/process/execution:78:60)
    at node:internal/main/eval_string:28:3
    #作業3
     上記の状態のまま、Windowsへのインストールを再度実施しました。
    V18.12.1 VScodeの仮想環境は、V18.11.0 のまま
    detect node runtime1回目 [eval]:1~ Node.js v18.12.1
     続いて、入力可能なプロンプト
    detect node runtime2回目 [eval]:1~ Node.js v18.11.0
     次のプロンプトで、「履歴が復元されました」とでたあと、、入力可能なプロンプト
    detect node runtime3回目 [eval]:1~ Node.js v18.12.1
    表示の内コメント付きのプロンプトが2回出た後、入力可能なプロンプト
    detect node runtime4回目 赤字のコメント(既出)
     「履歴が復元されました」付きのプロンプト3回の後、入力可能なプロンプト
    (赤字のコメントの対策で、最新版のインストール実施を見たので実施してみた。)
    このエラー無視してもいいものなのか?よくわかりません。
  2. [Node.js 一旦removeというか、Windowsからアンインストールしました。]
    時にエラーが出ている時点でNode.js(v18.12.1)の問題では無いようです。

    Anaconda(?)、 powershell(7.3.0)はデフォルトで64bit起動ですよね!
    set 等でpathが全て64bitであるか確認してください。

     all 64bitで利用でいないときのurlを紹介したのが仇となったのでしょうか?
  3. @teraotakahiro1

    Questioner

    返信遅くなり申し訳ありません。
    32bitで動いているようなものはありませんでした。
    SQLtoolsを無効にすれば、ある意味当然ですがエラーは出なくなりました。
    現状、SQLtoolsにお世話になっている場面はないので、とりあえず「無効化」で矛を収めようと思います。お世話になりました。

Your answer might help someone💌