使用 Deno 在本地网络上提供文件服务
Serving files on a local network with Deno
我最近决定尝试一下 Deno。
现在我正在尝试在我的本地网络上设置一个基本的文件服务器,但它只会向我的计算机提供文件,而不是网络的其余部分(我什至无法向服务器来自我的计算机之外)。对于我的生活,我无法弄清楚为什么它只能在本地工作。
为了以防万一,我在下面添加了我现在正在使用的代码,但我很确定问题出在其他地方,因为我和 this file_server example and when I create a file server with oak
有同样的问题
import { serve } from 'https://deno.land/std@v0.42.0/http/server.ts';
const server = serve({ port: 3000 });
const decoder = new TextDecoder('utf-8');
for await (const req of server) {
const filePath = 'public' + req.url;
try {
const data = await Deno.readFile(filePath);
req.respond({ body: decoder.decode(data) });
} catch (error) {
if (error.name === Deno.errors.NotFound.name) {
console.log('File "' + filePath + '" not found');
req.respond({ status: 404, body: 'File not found' });
} else {
req.respond({ status: 500, body: 'Rest in pieces' });
throw error;
}
}
}
我对 运行 文件使用的命令是:
deno --allow-all server.ts
当我在 Node.js 中创建一个简单的文件服务器时,一切正常。它可以向我的计算机和网络上的任何其他设备提供文件。
我认为错误在于我对 Deno 及其安全概念的理解,但我不知道。如果有任何帮助,我将不胜感激,如果需要,我可以提供更多详细信息。
您需要像这样将主机名绑定到 0.0.0.0
:
const server = serve({ hostname: '0.0.0.0', port: 3000 });
默认情况下,您的网络服务器仅响应 localhost
和 127.0.0.1
。
绑定到 0.0.0.0
告诉 Deno 绑定到你机器上的所有 IP addresses/interfaces。这使得您网络上的任何机器都可以访问它。
您的 192.168.x.y.
格式的网络 IP 地址也绑定到 Deno 网络服务器,这允许您网络中的另一台计算机使用您的本地 IP 地址访问该网络服务器。
我最近决定尝试一下 Deno。
现在我正在尝试在我的本地网络上设置一个基本的文件服务器,但它只会向我的计算机提供文件,而不是网络的其余部分(我什至无法向服务器来自我的计算机之外)。对于我的生活,我无法弄清楚为什么它只能在本地工作。
为了以防万一,我在下面添加了我现在正在使用的代码,但我很确定问题出在其他地方,因为我和 this file_server example and when I create a file server with oak
有同样的问题import { serve } from 'https://deno.land/std@v0.42.0/http/server.ts';
const server = serve({ port: 3000 });
const decoder = new TextDecoder('utf-8');
for await (const req of server) {
const filePath = 'public' + req.url;
try {
const data = await Deno.readFile(filePath);
req.respond({ body: decoder.decode(data) });
} catch (error) {
if (error.name === Deno.errors.NotFound.name) {
console.log('File "' + filePath + '" not found');
req.respond({ status: 404, body: 'File not found' });
} else {
req.respond({ status: 500, body: 'Rest in pieces' });
throw error;
}
}
}
我对 运行 文件使用的命令是:
deno --allow-all server.ts
当我在 Node.js 中创建一个简单的文件服务器时,一切正常。它可以向我的计算机和网络上的任何其他设备提供文件。
我认为错误在于我对 Deno 及其安全概念的理解,但我不知道。如果有任何帮助,我将不胜感激,如果需要,我可以提供更多详细信息。
您需要像这样将主机名绑定到 0.0.0.0
:
const server = serve({ hostname: '0.0.0.0', port: 3000 });
默认情况下,您的网络服务器仅响应 localhost
和 127.0.0.1
。
绑定到 0.0.0.0
告诉 Deno 绑定到你机器上的所有 IP addresses/interfaces。这使得您网络上的任何机器都可以访问它。
您的 192.168.x.y.
格式的网络 IP 地址也绑定到 Deno 网络服务器,这允许您网络中的另一台计算机使用您的本地 IP 地址访问该网络服务器。