'不支持使用 Node.js 解析 ES 模块的目录导入'

新手上路,请多包涵

我正在使用 Node.js v14.13.0

app.js 文件:

 import database from './database';

database();

数据库/index.js 文件:

 import mongoose from 'mongoose';

export default connect = async () => {
    try {
        await mongoose.connect('...', { });
    } catch (error) {}
};

package.json 我添加了 "type": "module"

运行应用程序后,我收到以下错误:

错误 [ERR_UNSUPPORTED_DIR_IMPORT]: Directory import ‘/Users/xx/Desktop/Projects/node-starter/src/database’ 不支持解析从 /Users/xx/Desktop/Projects/node-starter/src/app 导入的 ES 模块。 js

原文由 Ayoub k 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 2.6k
2 个回答

使用 ES6 模块,你不能(还?)导入目录。您的导入应如下所示:

 import database from "./database/index.js"

原文由 php_nub_qq 发布,翻译遵循 CC BY-SA 4.0 许可协议

这里发生的是 Node 要求import 语句中使用扩展,并且还指出,

目录索引(例如 './startup/index.js' )也必须完全指定。

您的 import database from './database'; 语句未指定 index.js 。您可以按照另一个答案中的建议添加 index.js ,但是当您最终从 .ts ffdff0ef7290da219c265ea691ec7 导入 .js 文件时,这种方法 在 TypeScript 项目 中看起来并不优雅 --- 一个。

您可以通过传递 --experimental-specifier-resolution=node 标志 来更改此节点扩展解析行为。这将起作用并将保持您的代码不变:

应用程序.js

 import database from './database';
database();

运行为: node --experimental-specifier-resolution=node app.js

一位 Node 开发人员承认文档 不是那么清楚

原文由 Dan Dascalescu 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏