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

时间:2020-09-12 07:40:12

标签: javascript node.js ecmascript-6

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

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

...
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

我没有使用打字稿,Webpack,Babel或任何其他翻译器。没有它们,是否有可能获得绝对进口?

1 个答案:

答案 0 :(得分:0)

因为您缺少*.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"