我正在尝试将一些数据播种到数据库中:
// seed.js
var Knex = require("knex");
var database = require("./config").database;
var knex = Knex.initialize(database);
knex("users").insert({
first_name: "John",
last_name: "Doe"
}).exec(function (err, id) {
console.log("Fulfilled", id);
});
// returns [ 1 ]
我的问题是,如果我把它放在一个文件中并使用node seed.js
运行它,它会执行console.log
然后它似乎等待更长时间(大约20秒)才返回shell提示符。在REPL中做同样的事情,结果是瞬时的。
如果我在shell中运行它并在REPL中执行此代码,我的代码会再次向命令提示符显示20秒,是否有原因?
答案 0 :(得分:1)
默认情况下节点不会在脚本完全完成之前返回控制台,而在节点repl内部,它会在最后一行停止阻塞后立即返回repl。
在repl中你实际上在console.log打印之前得到了焦点,而在脚本中它还必须等待东西关闭,你可以通过在console.log之后添加process.exit(0)
来加速它。