【问题标题】:How can I keep "require" working for dynamic expressions我怎样才能让“要求”为动态表达式工作
【发布时间】:2018-07-26 20:09:55
【问题描述】:

我想捆绑一个 Node.js 脚本,它在某处调用 require(expression)。将脚本与 webpack 捆绑后,require 失败。这是一个超级简化的例子:

// main.js
const x = require(process.argv[2])
console.log(x)

我想对这种情况有一个“正常”的要求,或者告诉 webpack 包含一个我知道将来会需要的特定文件(捆绑后)。继续这个例子,我在捆绑之前知道process.argv[2] 的值。

注意:基于表达式的 require 代码是一个依赖项,所以我无法调整 require 代码。

这是我的 webpack.config.js

module.exports = {
  entry: './test.js',
  output: {
    filename: 'test.js'
  },
  target: 'node'
}

【问题讨论】:

  • 添加 target: 'node' 应该适合你
  • 我已经设置了 target: 'node'。
  • 有趣.../* webpackIgnore: true */ 也可以。通过这样做,webpack 不会处理 require。尝试做:require(/* webpackIgnore: true */ process.argv[2])
  • 我可以添加require(/* webpackIgnore: true */ process.argv[2]),但实际需要发生在我无法修改的依赖项中。
  • ouch... 至少尝试修改 node_modules 上的代码,看看是否可行,否则我建议您直接前往 webpack repo 并在那里提出问题。请务必声明这是一个重要的示例,stackoverflow 中没有人知道它。

标签: node.js webpack webpack-4


【解决方案1】:

require 路径是相对于它所使用的文件的路径。所以你需要找出从 require 执行的位置到它正在加载的文件的路径从参数。然后将相关部分添加到参数中。

【讨论】:

  • 是的。我考虑了这一点。使用绝对文件路径也不起作用。
猜你喜欢
  • 2020-05-23
  • 2019-05-25
  • 1970-01-01
  • 2021-01-22
  • 2011-04-26
  • 1970-01-01
  • 2013-07-22
  • 2013-04-26
  • 1970-01-01
相关资源
最近更新 更多