esm无法解析模块别名

A. *_*Lau 6 javascript node.js npm

所以我正在使用package esmmodule-alias,但是esm似乎没有注册模块别名的路径。

这是我加载服务器文件的方式:

nodemon -r esm ./src/index.js 8081
Run Code Online (Sandbox Code Playgroud)

这是我index.js文件的顶部:

import "module-alias/register"
import "@/setup"
Run Code Online (Sandbox Code Playgroud)

import "@/setup"不起作用而起作用require("@/setup")

mih*_*hai 7

问题在于,在解析文件时,esm尝试import在加载任何其他模块之前处理所有语句。

在处理import语句时,它使用节点的内置函数,require而不是requiremodule-alias

要解决此问题,您需要先加载module-alias,然后再加载esm。这样,module-alias将有机会requireesm做任何事情之前修改功能。

您可以通过将多个-r参数传递给node 来实现这一点,但是请确保module-alias首先实现:

node -r module-alias/register -r esm index.js 8081
Run Code Online (Sandbox Code Playgroud)

或搭配nodemon

nodemon -r module-alias/register -r esm ./src/index.js 8081
Run Code Online (Sandbox Code Playgroud)

import "module-alias/register"由于现在是从命令行加载的,因此您还需要从代码中删除。

  • 我颠倒了顺序,现在似乎可以工作了,我的是这样的:`node -r esm -r module-alias/register index.js`,正常的需求不起作用 (3认同)