有没有办法在原生ES模块中从root导入?(nodejs16)

7gcisfzg  于 2023-04-05  发布在  Node.js
关注(0)|答案(2)|浏览(95)

这是我们的项目结构:

- project
-     a.js
-     b.js

在a.js中,我想使用根路径导入b.js文件,如下所示:

import c from '~/b.js';

但不使用像这样的相对路径:

import c from '../b.js';

我们使用的是原生的esmodule,而不是Babel或Webpack之类的,所以有什么办法吗?

pjngdqdw

pjngdqdw1#

这是一个非常不寻常的需求。

  • 通过使用包的名称自引用包,所以如果您的项目有一个名为my-projectpackage.json,那么您可以
import c from 'my-project/b.js';

从项目中的任何位置,而不使用相对导入

  • 通过子路径导入,因此如果声明一个
…
"imports": {
    "#b": "./b.js"
},
…

package.json中,您可以

import c from '#b';

当然,如果没有package.json,它就不能工作,因为没有package,你的项目就没有“根路径”。

a1o7rhls

a1o7rhls2#

子路径导入还支持使用目录,例如,为了使用

import {UserDao} from "#dao/UserDao.js";

package.json中指定

"imports":
{
  "#dao/*": "./main/dao/*",
}

注意事项:

  • #前缀是必需的
  • ./main/dao/*相对于package.json

相关问题