问一个 nodejs 的问题
发布于 10 年前 作者 tang3w 3894 次浏览 最后一次编辑是 8 年前

node 新手一枚,我使用了 gm 库,但是使用的时候遇到一个问题:

下面这段代码不能退出,会挂起,也没有 console.log 输出:

#!/usr/bin/env node
var fs = require('fs');
var gm = require('gm');
var argv = require('optimist')
	.demand(1)
	.demand('l')
	.alias('l', 'label')
	.describe('l', 'Specify a label')
	.argv;
 
var file = argv._[0];
var label = argv['label'];
var stream = fs.createReadStream(file);
var magic = gm(stream);
 
magic.size(function (err, size) {
	magic.drawText(40, 30, label).write('./defaults.png', function (err) {
		if (!err) console.log('Done!');
	});
});

但下面这段代码可以正常工作:

#!/usr/bin/env node
var fs = require('fs');
var gm = require('gm');
var argv = require('optimist')
	.demand(1)
	.demand('l')
	.alias('l', 'label')
	.describe('l', 'Specify a label')
	.argv;
 
var file = argv._[0];
var label = argv['label'];
var stream = fs.createReadStream(file);
var magic = gm(stream);
 
magic.drawText(40, 30, label).write('./defaults.png', function (err) {
	if (!err) console.log('Done!');
});

gm.size() 方法应该是异步的,为什么把逻辑写到异步方法里面会导致挂起呢?和 fs 模块有什么关系吗?

4 回复

不明白,顶一个

谢谢!解决了,官方文档没太看仔细,应该在 size 方法额外再传入一个参数才行。

Not enough non-option arguments: got 0, need at least 1
什么参数?

哦,这个参数是指一个文件,脚本要处理的文件,谢谢你啦

回到顶部