来自一个非常简单的查询程序的“.then 不是一个函数”
".then is not a function" from a very simple inquirer program
下面这个非常简单的例子(几乎是从 npm inquirer 的首页上复制过来的)给出了“.then 不是一个函数”的错误。但是我无法弄清楚问题是什么。
var inquirer = require('inquirer');
inquirer.prompt([
{
name: 'my_name',
type: 'input',
message: 'What is your name: '
}]).then(answers => {
console.log("Your name is:"+answers.my_name)
});
错误消息如下所示:
? What is your name:
/home/peter/Documents/nodejs.d/vscode_examples_workspace/security/inq.js:8
}]).then(answers => {
^
TypeError: inquirer.prompt(...).then is not a function
at Object.<anonymous> (/home/peter/Documents/nodejs.d/vscode_examples_workspace/security/inq.js:8:13)
at Module._compile (internal/modules/cjs/loader.js:654:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:665:10)
at Module.load (internal/modules/cjs/loader.js:566:32)
at tryModuleLoad (internal/modules/cjs/loader.js:506:12)
at Function.Module._load (internal/modules/cjs/loader.js:498:3)
at Function.Module.runMain (internal/modules/cjs/loader.js:695:10)
at startup (internal/bootstrap/node.js:201:19)
at bootstrapNodeJSCore (internal/bootstrap/node.js:516:3)
但是下面的例子可以正常工作。所以基本的node.js环境(nodejs --version=v9.11.2)就OK了。
var inquirer = require('inquirer');
let q = [
{
name: 'my_name',
type: 'input',
message: 'What is your name: '
}];
inquirer.prompt (q, function (answers){
console.log("Your name is: "+answers.my_name);
});
// Output
$ nodejs inq.js
? What is your name: Peter
Your name is: Peter
这可能是因为您使用的是不支持 promises 的旧版本查询器(0.12.0 或更早版本)(promises 是在 1.0.0 版本中添加的)。
您的代码片段在 6.0.0 和 1.0.0 版中运行良好,但在 0.12.0 版中出现完全相同的错误消息。
检查packages.json您的版本并更新它:
"dependencies": {
"inquirer": "^6.0.0"
}
然后做
npm install
下面这个非常简单的例子(几乎是从 npm inquirer 的首页上复制过来的)给出了“.then 不是一个函数”的错误。但是我无法弄清楚问题是什么。
var inquirer = require('inquirer');
inquirer.prompt([
{
name: 'my_name',
type: 'input',
message: 'What is your name: '
}]).then(answers => {
console.log("Your name is:"+answers.my_name)
});
错误消息如下所示:
? What is your name:
/home/peter/Documents/nodejs.d/vscode_examples_workspace/security/inq.js:8
}]).then(answers => {
^
TypeError: inquirer.prompt(...).then is not a function
at Object.<anonymous> (/home/peter/Documents/nodejs.d/vscode_examples_workspace/security/inq.js:8:13)
at Module._compile (internal/modules/cjs/loader.js:654:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:665:10)
at Module.load (internal/modules/cjs/loader.js:566:32)
at tryModuleLoad (internal/modules/cjs/loader.js:506:12)
at Function.Module._load (internal/modules/cjs/loader.js:498:3)
at Function.Module.runMain (internal/modules/cjs/loader.js:695:10)
at startup (internal/bootstrap/node.js:201:19)
at bootstrapNodeJSCore (internal/bootstrap/node.js:516:3)
但是下面的例子可以正常工作。所以基本的node.js环境(nodejs --version=v9.11.2)就OK了。
var inquirer = require('inquirer');
let q = [
{
name: 'my_name',
type: 'input',
message: 'What is your name: '
}];
inquirer.prompt (q, function (answers){
console.log("Your name is: "+answers.my_name);
});
// Output
$ nodejs inq.js
? What is your name: Peter
Your name is: Peter
这可能是因为您使用的是不支持 promises 的旧版本查询器(0.12.0 或更早版本)(promises 是在 1.0.0 版本中添加的)。
您的代码片段在 6.0.0 和 1.0.0 版中运行良好,但在 0.12.0 版中出现完全相同的错误消息。
检查packages.json您的版本并更新它:
"dependencies": {
"inquirer": "^6.0.0"
}
然后做
npm install