首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Deno中使用node_modules作为类型记录导入?

如何在Deno中使用node_modules作为类型记录导入?
EN

Stack Overflow用户
提问于 2021-05-30 00:43:17
回答 1查看 295关注 0票数 2

项目: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调用)

代码语言:javascript
复制
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()

}

这将返回以下错误:

代码语言:javascript
复制
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模块翻译时,我有点不知所措。

我的文件结构如下:

代码语言:javascript
复制
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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-02 17:01:19

如果您查看std中的节点兼容性层README,您就会意识到现在没有针对网络库的兼容性模块。兼容性将一天比一天好,但要考虑到Deno并不是Node的替代品,而是一种全新的东西,默认情况下不能与Node库一起工作。

https://deno.land/std@0.97.0/node

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67756755

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档