【问题标题】:ES6 get path of module inside moduleES6 获取模块内部模块的路径
【发布时间】:2018-06-04 22:25:15
【问题描述】:

如何获取模块内的模块路径?我使用 babel 和 webpack 为浏览器创建包。

我期待

/src/someModule/index.js

console.log(`someModule path is ${process.execPath}`);

浏览器中输出someModule path is /home/user/proj/src/someModule

someModule path is /src/someModule

【问题讨论】:

  • 在浏览器中运行 JS 时,您无法在服务器上获得任何信息,因为它是由客户端的浏览器在本地运行的。为什么需要这些信息?也许您遗漏了什么,或者没有找到解决您遇到的问题的适当方法。
  • 是的,但是我可以在 webpack 处理过程中将这些路径作为最终捆绑包中的字符串,如 webpack 插件 DefinePlugin 以将 process.env 传递给捆绑包吗?
  • 你可以试试module.imodule.children。这适用于我的 React 应用程序。
  • @Andrew 您要解决的问题是什么?目前看来你做错了什么

标签: javascript webpack es6-modules


【解决方案1】:

现在所有现代浏览器都支持import.meta,耶!

// /es6/someFile.js
console.log(import.meta);

输出:

{url: "https://yourdomain.com/es6/someFile.js"}

(尽管 OP 询问了 webpack,但我相信这些信息对很多来这里的人来说都是有用的)

【讨论】:

    【解决方案2】:

    目前无法访问 ES6 模块中的模块路径。这是一个known problem,还有一个stage 3 proposal 用于新的元属性import.meta,它解析为具有相应信息的对象。阅读更多关于 here 的信息。

    也就是说,webpack 打包器确实 support Node's __dirname,参见例如Current file path in webpackWebpack can not use __dirname?

    【讨论】:

    猜你喜欢
    • 2016-07-07
    • 2018-01-29
    • 1970-01-01
    • 2022-12-11
    • 2018-03-30
    • 1970-01-01
    • 1970-01-01
    • 2018-06-20
    • 1970-01-01
    相关资源
    最近更新 更多