javascript - 如何同时使用在浏览器和外部浏览器中运行的代码(node.js 文件系统)
问题描述
我想在浏览器中输入文件夹的路径并显示位于其中的所有文件名,我发现它可以使用节点 fs,但我也有在浏览器上运行的代码,它需要位于文件中的 vars,这将使用节点在浏览器之外运行。我需要使用节点创建服务器并从中运行所有代码吗?或者你可以推荐我达到这个目标吗?PS:顺便说一下,我使用 webpack
解决方案
浏览器端和服务器端的 javascript 是有区别的。您不能直接从浏览器访问该目录。您需要某种后端技术,如 PHP、Java、node、python 等才能获取文件列表。您可以使用节点服务器和以下代码作为阅读目录。然后从前端向后端服务器发出一个简单的 HTTP 请求。
const path = require('path');
const express = require('express');
const fs = require('fs');
const PORT = 3000;
const app = express();
app.get('/getfiles', async (req, res) => {
const directoryPath = path.join(__dirname, 'Documents');
let data = [];
await fs.readdir(directoryPath, function (err, files) {
//handling error
if (err) {
return console.log('Unable to scan directory: ' + err);
}
//listing all files using forEach
files.forEach(function (file) {
// Do whatever you want to do with the file
data.push(file)
});
});
res.send(data);
});
app.listen(PORT, ()=>{
console.log(`server running on port ${PORT}`);
});
推荐阅读
- java - Liquibase 使用 Java 代码创建自定义函数,可用作 SQL 函数
- c# - Fluent TestValidate 不会为使用 SetValidator 在 List 上设置的规则引发验证错误
- apache-kafka - Kafka Connect BigQuery Sink Connector 从 Schema Registry 请求不存在的关键主题名称
- hyperparameters - 警告“未知或未初始化的列:`ntree`。” 当尝试使用包 mlr 将超参数传递给学习者时
- python - 使用基于行值的列创建新数据框
- node.js - 找不到与 @typescript-eslint/scope-manager@4.22.1 匹配的版本
- lucene - 可以将 boost 应用于 Lucene 字段吗?
- javascript - 为什么 MutationObserver 不适用于 FullCalendar 中的标题更改?
- css - 如何在drupal 8中将所有外部css文件组合成一个文件
- javascript - TypeScript 对象数组搜索