所以我使用的是esm
和module-alias
包,但是esm似乎没有注册模块别名的路径。
这是我加载服务器文件的方式:
nodemon -r esm ./src/index.js 8081
这是我的
index.js
文件的顶部:import "module-alias/register"
import "@/setup"
import "@/setup"
不起作用,而require("@/setup")
起作用。 最佳答案
问题是esm
会在解析文件时尝试处理所有import
语句,然后再加载其他模块。
在处理import
语句时,它使用节点的内置require
,而不是由require
创建的修改后的module-alias
。
要解决此问题,您需要先加载module-alias
,然后再加载esm
。这样,module-alias
将有机会在require
做任何事情之前修改esm
函数。
您可以通过将多个-r
参数传递给node来实现这一点,但要确保module-alias
首先出现:
node -r module-alias/register -r esm index.js 8081
或使用
nodemon
:nodemon -r module-alias/register -r esm ./src/index.js 8081
您还需要从代码中删除
import "module-alias/register"
,因为现在是从命令行加载的。