如何使用nodejs导入路径中带有@符号的模块?

问题描述 投票:0回答:2

前提

我有一个 VueJS 项目,使用我编写的服务模块。

自从我使用 vue cli 以来,我使用了方便的

@
符号来表示我的 src 文件夹,并使用该模式轻松加载我的所有模块:

  /* Inside someService.js */
  import API from '@/services/APIService.js'

问题

问题是现在我尝试使用nodejs加载这些模块以在服务器上使用相同的功能并避免重复代码。

我使用

esm
绕过了节点中的 import 支持,但使用
@
符号的所有模块均出现错误。

可能的解决方案

我可以浏览我的整个代码库并尝试摆脱

@
符号,但这将是我最后的手段。

问题

如何使用

@
符号来表示
src
文件夹来加载这些模块?

javascript node.js vue.js import path
2个回答
1
投票

回答

我最终使用了link-module-alias

它为您的别名创建一个符号链接,就像模块别名一样,它在您添加的

package.json
中以相同的方式定义:

{
  // ... details, dependencies etc.
  "_moduleAliases": {
    "@": "./src"
  },
}

可能的答案

我看到使用模块别名存在可能的解决方案。 您可以在

"_moduleAliases"
中定义与上面答案完全相同的
package.json
,但您可以在运行时使用模块别名而不是符号链接,如下所示:

node -r module-alias/register -r esm index.js 8081

但这对我不起作用。


0
投票

还有一个使用此包的选项 - https://www.npmjs.com/package/typescript-transform-paths

使用 TypeScript 的路径配置和/或自定义解析路径转换编译的源模块解析路径

值得一看

© www.soinside.com 2019 - 2024. All rights reserved.