以下代码在c:/api/iaas
中生成 Vagrantfile ,而不是使用mkdir
创建新文件,然后将 Vagrantfile 添加到该文件夹。< / p>
mkdir
部分应创建文件夹,但不会创建它。如何修复它以便创建文件夹然后将 Vagrantfile 添加到它?
所需:
c:/api/iaas/ubuntu/Vagrantfile
现在发生了什么:
c:/api/iaas/Vagrantfile
exec(function (err, boxes) {
if (err) return next(err);
exec('mkdir ' + box.boxos, {
cwd: 'c:/api/iaas/'
}, function (error, stdout, stderr) {
// work with result
});
exec('vagrant init ' + box.boxos + '/' + box.boxversion, {
cwd: 'c:/api/iaas/' + box.boxos + '/'
}, function (error, stdout, stderr) {
// work with result
});
res.redirect('/profile/');
});
答案 0 :(得分:0)
fs.mkdirSync
创建目录,然后继续使用相关逻辑。
https://nodejs.org/api/fs.html
另一种选择是在fs.mkdir
答案 1 :(得分:-1)
var user_id = req.user.id;
var fs = require('fs');
fs.mkdir('c:/api/iaas/' + box.boxos, function (err) {
if(err) {
console.log('error in mkdir: ' + err);
} else {
Box.
find({
user_id: user_id
}).
sort('-updated_at').
exec(function (err, boxes) {
if (err) return next(err);
var exec = require('child_process').exec;
exec('vagrant init ' + box.boxos + '/' + box.boxversion, {
cwd: 'c:/api/iaas/' + box.boxos
}, function (error, stdout, stderr) {
// work with result
});
res.redirect('/profile/');
});
}
});
你应该看看有关异步编程的书籍。
答案 2 :(得分:-1)
简单的解决方案是nmp install mkdirp
和
app.get('/addbox/:id', isLoggedIn, function (req, res) {
Box.findById(req.params.id, function (err, box) {
console.log('addbox clicked');
var user_id = req.user.id;
// var mkdirp = require('mkdirp');
// mkdirp('c:/api/iaas/' + box.boxos, function (err) {});
Box.
find({
user_id: user_id
}).
sort('-updated_at').
exec(function (err, boxes) {
if (err) return next(err);
var box_path = 'c:/api/iaas/' + req.user.local.username + '/' + box.boxos + '/' + box.boxversion + '/' + box.id + '/'
new Instance({
user_id: req.user.id,
box_id: box.id,
box_path: box_path,
// ssh: req.body.ssh,
ssh: "ssh-",
username: req.user.local.username,
password: req.user.local.password
}).save(function (err, instance, count) {
if (err) return next(err);
mkdirp(box_path, function (err) {
var exec = require('child_process').exec;
exec('vagrant init ' + box.boxos + '/' + box.boxversion, {
cwd: box_path
}, function (error, stdout, stderr) {
// work with result
});
res.redirect('/profile/');
});
});
});
});
});