项目:REST用于服务存储在neo4j图形数据库中的信息。后端:Deno
我对德诺很陌生,但我对打字本并不陌生,因为我经常用它。
Problem:我想使用驱动程序将我的neo4j数据库连接到后端,但是没有为Deno开发的neo4j驱动程序。我已经在互联网和文档中搜索了解决方案,并一直试图使用节点模块导入工具导入javascript库,该工具是从类似的答案中建议的,并得到了deno团队的支持。
本质上,我执行npm install neo4j-driver,然后将以下代码添加到我的deno项目中。
失败解决方案: javascript节点模块包装器
我将此函数作为server.ts文件中deno服务器的测试来实现。
我为deno使用的命令是:deno run --allow-all --unstable server.ts
neo4j_conn.ts文件:(由server.ts调用)
import { createRequire } from "https://deno.land/std/node/module.ts";
const require = createRequire(import.meta.url);
export async function testconnection(uri: string, user: string, password: string) {
//This is the line that fails.
var neo4j = require('neo4j-driver').v1; //this fails whether or not I include the .v1 or not.
var driver = neo4j.driver(uri, neo4j.auth.basic(user, password))
const session = driver.session()
const personName = 'Alice'
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()
}
await driver.close()
}这将返回以下错误:
error: Uncaught (in promise) Error: Cannot find module 'net'
Require stack:
- /mnt/c/Users/xxxxx/source/private_logic/deno-try/node_modules/neo4j-driver-bolt-connection/lib/channel/node/node-channel.js
- /mnt/c/Users/xxxxx/source/private_logic/deno-try/node_modules/neo4j-driver-bolt-connection/lib/channel/node/index.js
- /mnt/c/Users/xxxxx/source/private_logic/deno-try/node_modules/neo4j-driver-bolt-connection/lib/channel/index.js
- /mnt/c/Users/xxxxx/source/private_logic/deno-try/node_modules/neo4j-driver-bolt-connection/lib/bolt/handshake.js
- /mnt/c/Users/xxxxx/source/private_logic/deno-try/node_modules/neo4j-driver-bolt-connection/lib/bolt/index.js
- /mnt/c/Users/xxxxx/source/private_logic/deno-try/node_modules/neo4j-driver-bolt-connection/lib/index.js
- /mnt/c/Users/xxxxx/source/private_logic/deno-try/node_modules/neo4j-driver/lib/index.js
- /mnt/c/Users/xxxxx/source/private_logic/deno-try/neo4jconn.ts
at Function._resolveFilename (https://deno.land/std@0.97.0/node/module.ts:273:19)
at Function._load (https://deno.land/std@0.97.0/node/module.ts:380:29)
at Module.require (https://deno.land/std@0.97.0/node/module.ts:133:21)
at require (https://deno.land/std@0.97.0/node/module.ts:1158:16)
at Object.<anonymous> (file:///mnt/c/Users/xxxxx/source/private_logic/deno-try/node_modules/neo4j-driver-bolt-connection/lib/channel/node/node-channel.js:24:29)
at Module._compile (https://deno.land/std@0.97.0/node/module.ts:168:36)
at Object.Module._extensions..js (https://deno.land/std@0.97.0/node/module.ts:1109:10)
at Module.load (https://deno.land/std@0.97.0/node/module.ts:147:34)
at Function._load (https://deno.land/std@0.97.0/node/module.ts:413:14)
at Module.require (https://deno.land/std@0.97.0/node/module.ts:133:21)据我所知,我已经做好了所有的事情,但是当涉及到类型记录/js模块翻译时,我有点不知所措。
我的文件结构如下:
package.json
package-lock.json
server.ts
neo4j_conn.ts
node_modules -|
|
:Neo4j developer js docs:https://neo4j.com/developer/javascript/
Deno节点模块“要求”:https://doc.deno.land/https/deno.land/std@0.97.0/node/module.ts
发布于 2021-06-02 17:01:19
如果您查看std中的节点兼容性层README,您就会意识到现在没有针对网络库的兼容性模块。兼容性将一天比一天好,但要考虑到Deno并不是Node的替代品,而是一种全新的东西,默认情况下不能与Node库一起工作。
https://stackoverflow.com/questions/67756755
复制相似问题