我正在节点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或任何其他翻译器。没有它们,是否有可能获得绝对进口?
答案 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"