【问题标题】:Webpack and Nodejs isomorphic require with absolute pathWebpack 和 Nodejs 同构需要绝对路径
【发布时间】:2015-10-21 01:46:27
【问题描述】:

GOAL:我正在尝试在 nodejswebpack 中设置一个项目,以便 require 函数可以使用项目目录作为根目录,所以我可以要求在两种环境中都使用相对于项目根目录的 绝对路径同构使用,即 React 服务器+客户端渲染)。

情况:在 webpack 中,您可以设置 config.resolve.root 以使其工作,但在 nodejs 中,最好不要覆盖/修改 global.require。

命题1:我可以做一个新的全局函数

global.p_require

所以它在节点中工作;但是,我无法在不更改 webpack 源代码的情况下让 webpack 将“p_require”解析为 __webpack_require__

PROPOSITION 2:我可以创建一个新的全局变量

global.ROOT_DIR = process.cwd()

所以它在节点中工作

require(ROOT_DIR + <relative path to root>);

然而,webpack 会将此识别为 动态要求。有没有办法让 webpack 解析 ROOT_DIR?我已经尝试过 Define Plugin,但它似乎在 webpack 解析 require 后加载。

问题

任何人有解决方案或面临同样的问题?

【问题讨论】:

  • 在运行 webpack 和服务器之前,你有没有试过设置NODE_PATHNODE_PATH=&lt;root_of-Project&gt; webpack, NODE_PATH=&lt;root_of-Project&gt; node server.js
  • 我试过这个。但问题是这里发生了什么gist.github.com/branneman/8048520(并不总是最好的黑客)
  • 这里也有同样的问题..你找到解决方案了吗?

标签: javascript node.js reactjs webpack isomorphic-javascript


【解决方案1】:

我通过让 webpack 做更多事情来解决这个问题;而不是“节点和 webpack”,它是“webpack:客户端和服务器”。我让 webpack 为客户端构建一个构建,为服务器构建一个(后者在配置中使用“节点”作为其目标属性)。自定义 webpack 使用的目录很容易,所以你让它完成它的工作并为 node.js 创建一个构建。

在服务器上渲染时,您只需要编译的服务器构建。如果您需要将一些东西从服务器传递到 webpack 构建的应用程序,请将其连接到您用于服务器构建的入口点——webpack 会将其构建为 commonJs 模块,因此您的入口点可以导出任何内容是服务端需要渲染时最方便的接口。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-08
    • 2014-03-23
    • 2018-06-09
    • 2014-02-09
    • 1970-01-01
    • 1970-01-01
    • 2018-03-26
    • 1970-01-01
    相关资源
    最近更新 更多