如何使用 Express Callback 在 Node 中写入文件
How to Write File in Node with Express Callback
我正在尝试将来自 API 端点的请求写入具有节点包 express
和 file-system
的文件。但是,当我 运行 writeFile
函数时,文件夹或 txt 文件都没有写入文件系统。
我检查了文件夹权限,它们似乎设置正确。此外,控制台日志中的错误回调似乎 return 为空。
服务器代码
app.use((req, res, next) => { // Enable Cross-Origin Resource Sharing (CORS)
res.header("Access-Control-Allow-Origin", "*")
res.header("Access-Control-Allow-Methods", "GET,HEAD,OPTIONS,POST,PUT")
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, content-type, Accept, Authorization, x-api-key")
next()
})
app.post("/node/api/mssql/post-order-header", (req, res, next) => {
if(valid) write.orderHeader(req, res)
})
模块代码
let fs = require("fs")
...
exports.orderHeader = (req, res, next) => {
fs.writeFile('_log/receipts/test.txt', JSON.stringify(req.body), (err) => {
if (err) throw err;
console.log('The file has been saved!');
})
})
错误
C:\...\fs\write_order.js:17
if (err) throw err;
Error: ENOENT: no such file or directory, open 'C:...\test-folder\test.txt'
这可能与 Node 相关吗? (每次都想新建一个文件)
您必须像这样导入 fs
模块:
const fs = require('fs');
fs.mkdir
是异步的你需要在回调函数中调用fs.writeFile
,并且在写入文件之前使用JSON.stringify(res.body)
对象。最后一件事,您似乎正在导出一个中间件,这就是为什么您也应该通过添加 next
方法来完成中间件签名的原因:
const fs = require('fs');
exports.orderHeader = (req, res, next) => {
console.log(req.body) // properly logs body
fs.mkdir('test-folder', {mode: '777'}, (err) => {
if (err) return next(err);
fs.writeFile('test-folder/test.txt', JSON.stringify(req.body), (err) => {
if (err) return next(err);
next();
})
})
}
我正在尝试将来自 API 端点的请求写入具有节点包 express
和 file-system
的文件。但是,当我 运行 writeFile
函数时,文件夹或 txt 文件都没有写入文件系统。
我检查了文件夹权限,它们似乎设置正确。此外,控制台日志中的错误回调似乎 return 为空。
服务器代码
app.use((req, res, next) => { // Enable Cross-Origin Resource Sharing (CORS)
res.header("Access-Control-Allow-Origin", "*")
res.header("Access-Control-Allow-Methods", "GET,HEAD,OPTIONS,POST,PUT")
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, content-type, Accept, Authorization, x-api-key")
next()
})
app.post("/node/api/mssql/post-order-header", (req, res, next) => {
if(valid) write.orderHeader(req, res)
})
模块代码
let fs = require("fs")
...
exports.orderHeader = (req, res, next) => {
fs.writeFile('_log/receipts/test.txt', JSON.stringify(req.body), (err) => {
if (err) throw err;
console.log('The file has been saved!');
})
})
错误
C:\...\fs\write_order.js:17
if (err) throw err;
Error: ENOENT: no such file or directory, open 'C:...\test-folder\test.txt'
这可能与 Node 相关吗? (每次都想新建一个文件)
您必须像这样导入 fs
模块:
const fs = require('fs');
fs.mkdir
是异步的你需要在回调函数中调用fs.writeFile
,并且在写入文件之前使用JSON.stringify(res.body)
对象。最后一件事,您似乎正在导出一个中间件,这就是为什么您也应该通过添加 next
方法来完成中间件签名的原因:
const fs = require('fs');
exports.orderHeader = (req, res, next) => {
console.log(req.body) // properly logs body
fs.mkdir('test-folder', {mode: '777'}, (err) => {
if (err) return next(err);
fs.writeFile('test-folder/test.txt', JSON.stringify(req.body), (err) => {
if (err) return next(err);
next();
})
})
}