我尝试了以下代码,它显示 res 未定义。我怎样才能返回标准输出?
function run_shell_command(command)
{
var res
exec(command, function(err,stdout,stderr){
if(err) {
console.log('shell error:'+stderr);
} else {
console.log('shell successful');
}
res = stdout
// console.log(stdout)
});
return res
}
Run Code Online (Sandbox Code Playgroud) 我尝试了一个虚拟模块并将其存根,但不起作用.
app.js
function foo()
{
return run_func()
}
function run_func()
{
return '1'
}
exports._test = {foo: foo, run_func: run_func}
Run Code Online (Sandbox Code Playgroud)
test.js
app = require("./app.js")._test
describe('test', function(){
it('test', function(){
var test_stub = sinon.stub(app, 'run_func').callsFake(
function(){
return '0'
})
test_stub.restore()
var res = app.foo()
assert.equal('0', res)
})
})
Run Code Online (Sandbox Code Playgroud)
我尝试了以下建议: sinon stub不替换功能
但仍然是一样的.它不会取代功能.
我一开始试图杀死一个进程,我执行了
exec = require('child_process').exec;
exec('kill xxx', function(error, stdout, stderr) {
if (error) {
console.log('exec error: ', error);
}else{
console.log(stdout)
}
});
Run Code Online (Sandbox Code Playgroud)
我注意到 kill 程序可能启动了一个子进程,其输出无法在此处作为 stdout 捕获。
那么我通常可以捕获这些似乎与代码不太相关的控制台输出吗?
在 下"C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Tools\MSVC",我有不同的目录,例如:
但是,我注意到 Visual Studio 始终使用最新的次要版本。
我可以将其设置为使用旧的次要版本的工具集吗?
我正在使用sqlite,所以空间对我来说是一个问题.我想要一张表来存储一些城市的历史温度数据.表就像
city_name 2018_04_04 2018_04_03 2018_04_02 ......
Run Code Online (Sandbox Code Playgroud)
但问题是这些历史温度记录的范围对于不同的城市是不同的.例如,对于纽约,温度记录从公元1800年开始,伦敦的温度记录从公元1600年开始.因此,如果我构建一个列,其列以1600 AD开始,那么将会有大量空间填充Null.据我所知,如果数据是浮点数,Null也会占用空间.
我应该如何构建这个表,以便它"更智能"并填充更多有用的数据?或者至少"强制"Null不占用任何空间?