如何在 Deno 中使用 node_modules 作为打字稿导入?
How to use node_modules in Deno as typescript imports?
项目:REST API 用于提供存储在 neo4j 图形数据库中的信息。
后端:Deno
我对 deno 很陌生,但我对 typescript 并不陌生,在 Angular 中经常使用它。
问题:我想使用一个驱动程序将我的 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()
}
此returns以下错误:
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)
据我所知,我所做的一切都是正确的,但在 typescript/js 模块翻译方面我有点不知所措。
我的文件结构如下:
package.json
package-lock.json
server.ts
neo4j_conn.ts
node_modules -|
|
:
Neo4j 开发人员 js 文档:https://neo4j.com/developer/javascript/
Deno 节点模块“需要”:https://doc.deno.land/https/deno.land/std@0.97.0/node/module.ts
如果您查看 std 中的 Node 兼容层自述文件,您会发现目前没有用于 net 库的兼容模块。兼容性会一天比一天好,但要考虑到 Deno 并不是 Node 的替代品,而是一个默认情况下不能与 Node 库一起使用的全新事物
项目:REST API 用于提供存储在 neo4j 图形数据库中的信息。 后端:Deno
我对 deno 很陌生,但我对 typescript 并不陌生,在 Angular 中经常使用它。
问题:我想使用一个驱动程序将我的 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()
}
此returns以下错误:
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)
据我所知,我所做的一切都是正确的,但在 typescript/js 模块翻译方面我有点不知所措。
我的文件结构如下:
package.json
package-lock.json
server.ts
neo4j_conn.ts
node_modules -|
|
:
Neo4j 开发人员 js 文档:https://neo4j.com/developer/javascript/
Deno 节点模块“需要”:https://doc.deno.land/https/deno.land/std@0.97.0/node/module.ts
如果您查看 std 中的 Node 兼容层自述文件,您会发现目前没有用于 net 库的兼容模块。兼容性会一天比一天好,但要考虑到 Deno 并不是 Node 的替代品,而是一个默认情况下不能与 Node 库一起使用的全新事物