CNode

问一个 nodejs 的问题

Ttang3w发布于12 年前最后回复12 年前4 回复4417 浏览0 收藏

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)

K
keinwang#1·12 年前

不明白,顶一个

T
tang3w#2·12 年前

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

Y
yakczh#3·12 年前

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

T
tang3w#4·12 年前
引用 yakczhNot enough non option arguments: got 0, need at least 1 什么参数?

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

参与回复
登录后即可参与回复。登录