将查询者作为模块导入节点13



使用Node 13.12.0中的模块导入Inquirer时遇到问题。任何其他import都能很好地工作。只要我一直使用Node 12.xrequire(),它就可以很好地工作。

我的anything.mjs用例

import fs from "fs"; // works well
import inquirer from 'inquirer'; // undefined

所以我尝试只导入一个导出的模块

import {prompt} from 'inquirer'; // The requested module 'inquirer' does not provide an export named 'prompt'

也尝试过:

import * as inquirer from 'inquirer'; // [Module] { default: undefined }

我也尝试过require(),但它不再在模块中定义。


如何使用modulesNode 13.12.0中正确导入Inquirer

根据文档,您可以在节点13的ESM中使用require,如下所示:

import { createRequire } from 'module';
const require = createRequire(import.meta.url);
const inquirer = require('inquirer');

inquirer刚刚发布了v9.0并迁移到ESM模块。所以现在这将简单地工作:

import inquirer from 'inquirer';
const response = await inquirer.prompt([
{
type: 'input',
name: 'question',
message: 'Want to answer?'
}
]);
console.log(response.question);

使用ES模块和查询器2.3.6我是这样使用它的。我们可以将类型传递给prompt对象。

import enquirer from 'enquirer';
const enquirerObj =  new enquirer();
const response = await enquirerObj.prompt({
type:'confirm',
name: 'question',
message: 'Want to answer?'
});
console.log(response);

最新更新