gpt4 book ai didi

javascript - 在 Node.js + Vue.js 中从远程 SFTP 服务器下载文件?

转载 作者:太空宇宙 更新时间:2023-11-04 01:36:43 24 4
gpt4 key购买 nike

在我的 Vue.js 应用程序中,我需要从远程 SFTP 服务器下载 .csv 文件。

我尝试使用ssh2-sftp-client用于下载文件的 Node.js 库。

安装后出现下一个错误:

This dependency was not found:

* dns in ./node_modules/ssh2/lib/client.js

To install it, you can run: npm install --save dns

我使用以下命令安装了缺少的依赖项:

npm install --save dns

在这一步之后,我看到其他错误:

 warning  in ./node_modules/defaultable/defaultable.js

49:13-31 Critical dependency: the request of a dependency is an expression

第一个问题是如何正确设置库?

<小时/>

编辑

Vue.js 组件内的代码:

getFile (fileName) {
axios.post('http://localhost:3010/csv', {file_name: fileName}, {headers: {'Authorization': this.token}}).then(response => {
console.log(response)
this.showAlert('You download file successfully.', 'is-success', 'is-top')
}).catch((error) => {
console.log(error)
this.showAlert(error, 'is-danger', 'is-bottom')
})
}

app.js:

const express = require('express');
const cookieParser = require('cookie-parser');
const logger = require('morgan');
const cors = require('cors');
const path = require('path');
const bodyParser = require('body-parser');

const csvRouter = require('./server/routes/csv')

const app = express();

app.use(cors());
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(express.static(path.join(__dirname, 'dist')));
app.use(express.urlencoded({extended: false}));
app.use(cookieParser());

app.use('/csv', csvRouter);

module.exports = app;

路由器/csv.js:

const express = require('express')
const router = express.Router()

const csvControllers = require('../controllers/csv')

router.get('/', csvControllers.getFile)

module.exports = router

controllers/csv.js:

const request = require('request')
const queryString = require('query-string')
let Client = require('ssh2-sftp-client')
let sftp = new Client()

const config = require('../config')

exports.getFile = (req, res) => {
console.log(req) // In console I don't notice nothing.
let data = {
file_name: req.query.file_name
}
let options = {
method: 'port',
json: true,
header: {'Authorization': req.header.token},
url: `http://localhost:3010/csv?` + queryString.stringify(data)
}
request(options, (error, response) => {
console.log('Message') // In console I don't notice nothing.
if (response) {
sftp.connect(config.sftpServer).then(() => {
return sftp.get('/reports/' + data.file_name)
}).then((chunk) => {
console.log(chunk)
}).catch((err) => {
console.log(err)
})
} else {
response.status(500).send(error)
}
})
}

错误:

Error: Request failed with status code 404
at FtD3.t.exports (createError.js:16)
at t.exports (settle.js:18)
at XMLHttpRequest.f.(:3010/anonymous function) (http://localhost:3010/static/js/vendor.1dc24385e2ad03071ff8.js:1312:88758)

似乎 url 地址不正确,导致浏览器中出现 404 错误。我检查了几次 url 地址,但没有发现有什么问题。我想念什么?

最佳答案

Vue.js 在浏览器中运行。您不能使用依赖于 Node.js 提供的功能的模块,而这些功能在浏览器中不可用。

无法直接从浏览器使用 SSH。

关于javascript - 在 Node.js + Vue.js 中从远程 SFTP 服务器下载文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54336329/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com