次の手順に従って、neo4j を搭載した Google クラウド VM インスタンスを作成しました 。
ブラウザ Db は問題ないようです。ブラウザから表示および操作できます。
問題は、neo4j-driver npm を使用して nodejs から neo4j を接続しようとしたときです。
このエラーが発生し続けます:
UnhandledPromiseRejectionWarning: Neo4jError: サーバーによって接続が閉じられました
これはコードです:
const neo4j = require('neo4j-driver')
const uri = 'bolt://[EXTERNAL_IP]:[PORT]'
const user = 'USER_NAME'
const password = 'PASSWORD'
const createPerson = async () => {
const driver = neo4j.driver(uri, neo4j.auth.basic(user, password), { encrypted : "ENCRYPTION_OFF"})
const session = driver.session()
const personName = 'Bob'
try {
const result = await session.run(
'CREATE (a:Person {name: $name}) RETURN a',
{ name: personName }
)
const singleRecord = result.records[0]
const node = singleRecord.get(0)
console.log(node.properties.name)
} finally {
await session.close()
}
// on application exit:
await driver.close()
}
createPerson()
コードは次のリンクから取得されます: https://neo4j.com/developer/javascript/
このコマンドを実行gcloud compute ssh my-neo4j-instance
します。GCP シェルで、ssh を追加することで問題が解決することを期待していますが、解決しませんでした。
ドライバーの暗号化オプションを false に変更しても効果はありませんでした。
エラーを記録するコンソールはこれを印刷します:
Neo4jError: Connection was closed by server
at captureStacktrace (C:\Users\user\Desktop\Home Work\MyProject\LotteryService\node_modules\neo4j-driver\lib\result.js:263:15)
at new Result (C:\Users\user\Desktop\Home Work\MyProject\LotteryService\node_modules\neo4j-driver\lib\result.js:68:19)
at Session._run (C:\Users\user\Desktop\Home Work\MyProject\LotteryService\node_modules\neo4j-driver\lib\session.js:174:14)
at Session.run (C:\Users\user\Desktop\Home Work\MyProject\LotteryService\node_modules\neo4j-driver\lib\session.js:135:19)
at createPerson (C:\Users\user\Desktop\Home Work\MyProject\LotteryService\src\index.js:12:38)
at Object.<anonymous> (C:\Users\user\Desktop\Home Work\MyProject\LotteryService\src\index.js:31:1)
at Module._compile (internal/modules/cjs/loader.js:959:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:995:10)
at Module.load (internal/modules/cjs/loader.js:815:32)
at Function.Module._load (internal/modules/cjs/loader.js:727:14) {
code: 'ServiceUnavailable',
name: 'Neo4jError'
私は何が欠けていますか?
編集1:
Googleクラウドのログを見ました。私が見たのは、VM の開始と停止のログだけでした。
また、メイン ファイルの async 関数呼び出しのコードを修正しました。その代わりに
createPerson();
私はこれを試しました:
(async() => {
console.log('before start');
await createPerson();
console.log('after start');
})();
まだダメ、まだ: Neo4jError: 接続がサーバーによって閉じられました。また、neo4j ブログでも質問しましたが、回答がありませんでした。
編集2:
別のスタック オーバーフローの投稿で問題を確認しました。そこにあった答えは、パスワードを変更して、neo4j へのロギングを終了することでした。しかし、私はすでにそれをしました... また、neo4j slack グループに参加しましたが、まだ回答が得られませんでした。