Deno 声称与浏览器兼容。这是否意味着它有一个窗口/导航器对象,这在设置 window.location 等方面意味着什么?
我经常发现自己在读取一个大的 JSON 文件(通常是一个对象数组),然后操作每个对象并写回一个新文件。
为了在 Node 中实现这一点(至少是读取数据部分),我通常使用 stream-json 模块来做这样的事情。
const fs = require('fs');
const StreamArray = require('stream-json/streamers/StreamArray');
const pipeline = fs.createReadStream('sample.json')
.pipe(StreamArray.withParser());
pipeline.on('data', data => {
//do something with each object in file
});
Run Code Online (Sandbox Code Playgroud)
我最近发现了 Deno,并且希望能够使用 Deno 完成这个工作流程。
看起来标准库中的readJSON方法将文件的全部内容读入内存,所以我不知道它是否适合处理大文件。
有没有一种方法可以通过使用 Deno 中内置的一些较低级别的方法从文件中流式传输数据来完成?
我有一个Deno应用程序,我希望将一些命令行参数传递给它。我搜索了手册,但一无所获。
我尝试使用 Node.js 中使用的相同命令,假设它们可能会为 std 库共享一些命令,但效果不佳。
var args = process.argv.slice(2);
// Uncaught ReferenceError: process is not defined
Run Code Online (Sandbox Code Playgroud)
有什么建议?
真正让我相信 Node 强大的演示之一是 Ryan Dahl 在此视频中展示的简单 TCP 聊天服务器:https : //www.youtube.com/watch?v=jo_B4LTHi3I&t=28m23s
演示中的代码如下所示:
const net = require('net');
const server = net.createServer();
const sockets = [];
server.on('connection', (socket) => {
sockets.push(socket);
socket.on('data', (message) => {
for (const current_socket of sockets) {
if (current_socket !== socket) {
current_socket.write(message);
}
}
});
socket.on('end', () => {
const index = sockets.indexOf(socket);
sockets.splice(index, 1);
});
});
server.listen(8000, () => console.log('tcp server listening on port 8000'));
Run Code Online (Sandbox Code Playgroud)
我在 Deno 网站上找到的唯一 TCP 示例是一个回显服务器,如下所示:
const listener = Deno.listen({ port: 8080 …Run Code Online (Sandbox Code Playgroud) 我试过deno -V,它只提供 deno 的版本,不包括 typescript 版本。
$deno -V
deno 1.0.0-rc2
$
Run Code Online (Sandbox Code Playgroud) 我在网上发现了这个非常酷的示例,介绍了如何使用WebViewDeno 运行。
是否可以从放置在 html 模板内的 HTML 按钮元素调用 Deno 应用程序内的函数?
看一看:
// Importing the webview library
import { WebView } from "https://deno.land/x/webview/mod.ts";
// Creating an HTML page
let html = `
<html>
<body>
<h1>Hello from deno v${Deno.version.deno}</h1>
<button type="button" onclick="test()">RUN TEST FUNCTION</button>
</body>
</html>
`;
function test() {
console.log('You really can do that!');
}
// Creating and configuring the webview
const webview = new WebView({
title: "Deno Webview Example",
url: "data:text/html," + html,
// url: 'https://www.google.com',
width: 768,
height: …Run Code Online (Sandbox Code Playgroud) 我尝试在我的measure.ts脚本中使用以下代码:
Deno.DatagramConn.send(...)
Run Code Online (Sandbox Code Playgroud)
当我像这样运行我的脚本时:deno run --unstable --allow-all measure.ts我收到以下错误:
Property 'DatagramConn' does not exist on type 'typeof Deno'. 'Deno.DatagramConn' is an
unstable API. Did you forget to run with the '--unstable' flag?
Run Code Online (Sandbox Code Playgroud)
Deno.DatagramConn这个错误似乎同时否认和确认了API的存在
同样我也尝试过
Deno.connect({transport : 'udp'})
Run Code Online (Sandbox Code Playgroud)
但这给了我以下错误(这可能是有意义的,因为 UDP 是“无连接”):
Type '"udp"' is not assignable to type '"tcp"
Run Code Online (Sandbox Code Playgroud) 无法理解我刚刚在关于deno bundle命令的 Deno 手册部分末尾阅读的两个示例之间的区别:
捆绑包也可以在 Web 浏览器中加载。bundle 是一个自包含的 ES 模块,所以 type 属性必须设置为“module”。例如:
Run Code Online (Sandbox Code Playgroud)<script type="module" src="website.bundle.js"></script>或者您可以将其导入另一个 ES 模块以使用:
Run Code Online (Sandbox Code Playgroud)<script type="module"> import * as website from "website.bundle.js"; </script>
我的印象是这两种形式都达到了相同的效果(即“在浏览器继续解析页面之前立即获取并执行”),而后者用于跟随脚本或想要缩小导入的范围(例如,如本答案所示)。
第16.6.1.2模块中的探索ES6书出现这一评估同意。
Reddit 线程差异 Es6 导入模块 vs 脚本 src=""似乎也证实了这一点:“不是将整个库转储到您的全局范围内,而是只包含您需要和实际使用的内容。 ”
这可能被认为是其他问题的重复(见列表底部),但这些答案对我没有多大帮助,而且辅助资料似乎也没有表明我的假设是否正确。(另一方面,我很有可能忽略了一些明显的东西,并且不得不提高我的阅读理解能力......)
我正在尝试将 Supabase 与 deno 一起使用。我使用过import { createClient } from "https://esm.sh/@supabase/supabase-js",但它只给了我这样的错误
Module '"deno:///missing_dependency.d.ts"' uses 'export =' and cannot be used with 'export *'
我正在使用denodb 连接到 supabase postgres 服务器。
这是 deno 部署时出现的错误。
TLS 连接失败,并显示消息:无效的对等证书内容:无效的对等证书:UnsupportedCertVersion 默认为非加密连接
在这里建立连接:
import { Database, PostgresConnector } from "https://deno.land/x/denodb/mod.ts";
import "https://deno.land/x/dotenv/load.ts";
export const connection = (() => {
const DENODB_PGURL = Deno.env.get('DENODB_PGURL');
if (DENODB_PGURL) {
return new PostgresConnector({uri: DENODB_PGURL});
}
const DENODB_HOST = Deno.env.get('DENODB_HOST');
if (!DENODB_HOST) throw new Error('DENODB_HOST is not set');
const DENODB_USERNAME = Deno.env.get('DENODB_USERNAME');
if (!DENODB_USERNAME) throw new Error('DENODB_USERNAME is not set');
const DENODB_PASSWORD = Deno.env.get('DENODB_HOST');
if (!DENODB_PASSWORD) throw new Error('DENODB_PASSWORD is not set');
const DENODB_DATABASE …Run Code Online (Sandbox Code Playgroud) deno ×10
javascript ×4
node.js ×2
supabase ×2
chat ×1
cmdline-args ×1
database ×1
deno-deploy ×1
es6-modules ×1
postgresql ×1
script-tag ×1
tcp ×1
tls1.3 ×1
udp ×1
webview ×1