fs在典型的node.js/Express应用程序中调用模块中的方法时,当前目录是什么?例如:
var fs = require('fs');
var data = fs.readFile("abc.jpg", "binary");
Run Code Online (Sandbox Code Playgroud)
用于定位abc.jpg的默认文件夹是什么?它是否依赖于包含脚本的文件夹位置?
有查询当前目录的方法吗?
我的文件结构是:
ExpressApp1/
app.js
routes/
members.js
Run Code Online (Sandbox Code Playgroud)
在members.js中我创建了一个fs.createWriteStream("abc")和文件abcExpressApp1/
我正在编写一个从URL下载图像的应用程序,然后使用aws-sdk将其上传到S3存储桶.
我以前只是下载图像并将它们保存到磁盘上.
request.head(url, function(err, res, body){
request(url).pipe(fs.createWriteStream(image_path));
});
Run Code Online (Sandbox Code Playgroud)
然后像这样将图像上传到AWS S3
fs.readFile(image_path, function(err, data){
s3.client.putObject({
Bucket: 'myBucket',
Key: image_path,
Body: data
ACL:'public-read'
}, function(err, resp) {
if(err){
console.log("error in s3 put object cb");
} else {
console.log(resp);
console.log("successfully added image to s3");
}
});
});
Run Code Online (Sandbox Code Playgroud)
但我想跳过将图像保存到磁盘的部分.有什么方法可以pipe将响应request(url)转换为变量然后上传吗?
我试图在这里使用WHATWG URL对象支持读取文件
我收到此错误:未捕获TypeError:URL不是构造函数
这是我的代码:
var fs = require("fs");
const { URL } = require('url');
var dbPath = 'file://192.168.5.2/db/db.sqlite';
const fileUrl = new URL(dbPath);Run Code Online (Sandbox Code Playgroud)
我想为我的在线编辑器实现一个 SASS 编译器,为此我想使用 npm 包“node-sass”。但是我收到错误
Module not found: Error: Can't resolve 'fs' in '<MyProjectPath>\node_modules\fs.realpath'.
Run Code Online (Sandbox Code Playgroud)
我已经尝试通过以下方式通过 package.json 禁用该模块:
"browser": {
"fs": false
}
Run Code Online (Sandbox Code Playgroud)
此外,我找到了另一个通过 webpack 配置运行的解决方案,为此,我config-overrides.js使用 npm 包“”在我的根目录中创建了一个包含以下内容的文件“ react-app-rewired”:
module.exports = function override(def_config, env) {
return {
...def_config,
webpack: (config) => {
config.resolve = {
...config.resolve,
fallback: {
"fs": false,
}
}
return config
},
}
}
Run Code Online (Sandbox Code Playgroud)
但是,这也不能解决我的错误。有谁知道我该如何修复这个错误?我还希望了解有关如何将 SASS(作为字符串)编译为 CSS(使用 ReactJS)的替代建议。
我当前的package.json:
{
"name": "client",
"version": "0.1.0",
"private": true,
"proxy": "http://localhost:3001",
"dependencies": {
"@codemirror/lang-javascript": "^0.19.3",
"@testing-library/jest-dom": "^5.16.1",
"@testing-library/react": …Run Code Online (Sandbox Code Playgroud) 我试图确定文件是否存在.如果它不存在,我希望我的代码继续,以便它将被创建.当我使用以下代码时,如果该文件存在,则打印出"它存在".如果它不存在,它会崩溃我的应用程序.这是我的代码:
var checkDuplicateFile = function(){
var number = room.number.toString();
var stats = fs.statSync(number);
if(stat){
console.log('it exists');
}else{
console.log('it does not exist');
}
};
Run Code Online (Sandbox Code Playgroud) 我目前正在学习如何在nodejs中使用promises
所以我的第一个挑战是列出目录中的文件,然后使用异步函数获取每个步骤的内容.我提出了以下解决方案,但有一种强烈的感觉,这不是最优雅的方式来做到这一点,尤其是我将异步方法"转变"为承诺的第一部分
// purpose is to get the contents of all files in a directory
// using the asynchronous methods fs.readdir() and fs.readFile()
// and chaining them via Promises using the bluebird promise library [1]
// [1] https://github.com/petkaantonov/bluebird
var Promise = require("bluebird");
var fs = require("fs");
var directory = "templates"
// turn fs.readdir() into a Promise
var getFiles = function(name) {
var promise = Promise.pending();
fs.readdir(directory, function(err, list) {
promise.fulfill(list)
})
return promise.promise;
}
// turn fs.readFile() into a Promise …Run Code Online (Sandbox Code Playgroud) 这就是我所拥有的:
#! /usr/bin/env node
var fs = require('fs'),
files = fs.readdirSync(__dirname + '/files/'),
files.forEach(function(file) {
fs.readFile(__dirname + '/files/' + file, 'utf8', function (error, data) {
console.log(data)
})
})
Run Code Online (Sandbox Code Playgroud)
即使我使用readdirSync输出仍然是异步的:
alex@alex-K43U:~/node/readFiles$ node index.js
foo 1
foo 3
foo 2
Run Code Online (Sandbox Code Playgroud)
如何修改代码使输出变得同步?
alex@alex-K43U:~/node/readFiles$ node index.js
foo 1
foo 2
foo 3
Run Code Online (Sandbox Code Playgroud) 我有一个可执行节点/ javascript脚本,它有一个调试布尔值,如果设置为true,将写入几个文件.此可执行文件也是节点模块.根据运行脚本的用户的工作目录,似乎该函数找不到要将文件写入的目录.
该模块的结构如下
output/
lib/
helpers.js
index.js
Run Code Online (Sandbox Code Playgroud)
我最初的推理是拥有这条道路.
helper.write = function(data,filename){
if(typeof data !== "string") data = JSON.stringify(data);
fs.writeFileSync("./output/"+filename, data);
};
Run Code Online (Sandbox Code Playgroud)
但是,这在node_module文件夹中运行脚本时有效
fs.writeFileSync("process.cwd()+"/node_modules/the_module/output/"+filename, data);
Run Code Online (Sandbox Code Playgroud)
像这样
node ./my_app/node_modules/the_module/index.js
Run Code Online (Sandbox Code Playgroud)
如果模块在另一个使用该库的可执行文件中使用,则会更加混乱.
node ./my_app/run.js
Run Code Online (Sandbox Code Playgroud)
有没有办法独立于所有这些变量保存文件?
我有一个webpack配置,如:
var path = require('path')
module.exports = {
entry: "./index.js",
output: {
path: path.join(__dirname, 'static'),
filename:'bundle.js'
},
module: {
loaders: [
{ test: /\.js$/, exclude: /node_modules/, loader: "babel-loader"},
{ test: /\.json$/, loader: 'json-loader' },
]
},
node: {
fs: "empty"
}
};
Run Code Online (Sandbox Code Playgroud)
我想用文件阅读文件 fs
我做的事情如下:
var fs = require('fs')
console.log(fs)
fs.readFile('input.txt', function (err, buffer) {
console.log("buffer")
console.log(buffer)
})
Run Code Online (Sandbox Code Playgroud)
我只是想在这里阅读一个文件,但是当我这样做时它给了我一个错误说:
fs.readFile不是一个功能
我已经安装fs使用npm install --save fs
另外,当我打印fs它给我空对象.我上面做的console.log(fs)就是给我空物
这里有什么问题?
我在用Node.js.
我想检查文件夹是否为空?一种选择是使用fs.readdir,但它将整堆文件加载到一个数组中.我在该文件夹中有超过10000个文件.加载文件名仅用于检查文件夹是否为空.所以寻找替代解决方案.