首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在ESModules中从复杂路径导入模块的最佳方法是什么?

在ESModules中从复杂路径导入模块的最佳方法是什么?
EN

Stack Overflow用户
提问于 2018-06-24 12:14:11
回答 1查看 97关注 0票数 2

在CommonJS中,我使用这种方式。

代码语言:javascript
复制
require(constant.APPROOT + "/lib/utils.js")

而不是

代码语言:javascript
复制
require("../../../../../../lib/utils.js")

但是,它不能在ESModules中工作。

代码语言:javascript
复制
import util from constant.APPROOT + "/lib/util.js"
// Uncaught SyntaxError: Unexpected identifier

我知道原因,因为它不是静态的。

我试过两种方法。

1st

代码语言:javascript
复制
import path from "path"
import fs from "fs"
import foo from "./foo.js"
import bar from "../../../../../lib/bar.js"
import util from "../../../../../lib/util.js"

// application code

2nd

代码语言:javascript
复制
import path from "path"
import fs from "fs"
import foo from "./foo.js"

!async function main(){
   const [bar, util] = await Promise.all([
       import(constant.APPROOT + "/lib/bar.js"),
       import(constant.APPROOT + "/lib/util.js"),
   ])

   // application code

}()

我觉得两者都不好。最好的方法是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-24 13:19:17

1. Webpack

您可以使用webpack设置别名(如果您正在构建一个节点应用程序,然后在您的配置中设置target: node,那么就有很多关于如何实现这一点的好指南):

代码语言:javascript
复制
  resolve: {
    ...,
    alias: {
      '$lib': constant.APPROOT + "/lib"
    }
  }

然后导入-> import util from "$lib/util.js"

2.国家预防机制一揽子计划

您可以使用此包在package.json -> https://github.com/ilearnio/module-alias中设置别名。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51009861

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档