【问题标题】:How to import modules with @ symbol in path in using nodejs?如何在使用nodejs的路径中导入带有@符号的模块?
【发布时间】:2019-11-12 16:47:23
【问题描述】:

前提

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

因为我使用了 vue cli,所以我使用了方便的 @ 符号来表示我的 src 文件夹并使用该模式轻松加载我的所有模块:

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

问题

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

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

可能的解决方案

我可以检查我的整个代码库并尝试摆脱 @ 符号,但这是我最后的手段。

问题

如何使用@ 符号加载这些模块以表示src 文件夹?

【问题讨论】:

  • 这个 npm 包,module-alias 可能会有所帮助
  • @StephenS 看起来像我需要的,但它不起作用。你以前用过这个吗?
  • 可惜没有,我只是好奇地搜了一下!
  • 看看你对这个模块别名的尝试,也许我可以帮助你。正是你的 package.json
  • 我认为你应该使用 webpack 作为 node。在这种情况下,您将有两个构建,一个用于 web,另一个用于 node。这里有一些优点(例如 babel)和缺点(例如,您必须使用源映射进行测试)。别名它不是 web 或 nodejs 的一部分,它是构建管理器的功能,例如 webpack。链接:webpack.js.org/concepts/targets

标签: javascript node.js vue.js import path


【解决方案1】:

回答

我最终使用了link-module-alias

它为您的别名创建一个符号链接,就像在 package.json 中定义的模块别名一样,您添加:

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

可能的答案

我看到a possible solution 存在使用module-alias。 您将在package.json 中定义与上述答案完全相同的"_moduleAliases",但您将在运行时使用模块别名而不是符号链接,如下所示:

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

但它对我不起作用。

【讨论】:

    猜你喜欢
    • 2018-12-29
    • 1970-01-01
    • 2015-12-06
    • 1970-01-01
    • 1970-01-01
    • 2018-11-08
    • 2018-09-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多