繁体   English   中英

节点 14:使用原生 ES6 模块的绝对路径导入模块

[英]Node 14: Import modules using an absolute path for native ES6 module

我正在节点14.9.0编写一个应用程序。 我通过在package.json添加"type": "module"创建了一个 ES6 模块。 我正在尝试为我的项目导入模块。 我想避免使用相对导入(因为../../是如此可读),而是想要使用绝对导入,就像每个模块都是从我项目根目录中的index.js文件导入的一样。

从我收集的关于节点如何发现模块的信息来看,省略了. 从我的导入路径的前面应该使 node 默认从我的项目的根目录中查找模块。 但是,它会尝试从我的硬盘驱动器的根目录查看。

...
import User from '/models/user.model';
...
Error [ERR_MODULE_NOT_FOUND]: Cannot find module 'C:\models\user.model' imported from C:\Users\User\Documents\My App\my-app\index.js

我没有使用 typescript、webpack、babel 或任何其他转译器。 没有它们是否有可能获得绝对进口?

因为您缺少*.js扩展名。 它需要 ECMA 节点模块 ( https://nodejs.org/api/esm.html#esm_mandatory_file_extensions )。 这将是有效的(现在我正在没有 Babel 的节点 14 中开发):

import User from '/models/user.model.js';

在根 package.json 中,您必须添加:

"type": "module"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM