Javascript 具有绝对路径的网页包和节点同构要求

Javascript 具有绝对路径的网页包和节点同构要求,javascript,node.js,reactjs,webpack,isomorphic-javascript,Javascript,Node.js,Reactjs,Webpack,Isomorphic Javascript,目标:我试图在节点和网页中设置一个项目,以便require函数可以使用项目目录作为根目录,因此我可以在两种环境中使用相对于项目根目录的绝对路径进行require(同构使用即React server+client render) 情况:在webpack中,您可以设置config.resolve.root使其工作,但在nodejs中,其最佳做法是不覆盖/修改global.require 提议1:我可以创建一个新的全局函数 global.p_require 因此它在节点中工作;但是,我无法找到一种方

目标:我试图在节点网页中设置一个项目,以便require函数可以使用项目目录作为根目录,因此我可以在两种环境中使用相对于项目根目录的绝对路径进行require(同构使用即React server+client render)

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

提议1:我可以创建一个新的全局函数

global.p_require
因此它在节点中工作;但是,我无法找到一种方法,让webpack在不更改webpack源代码的情况下将“p_require”解析为\uuu webpack_require\uuuu

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

global.ROOT_DIR = process.cwd()
因此,它可以按节点工作

require(ROOT_DIR + <relative path to root>);
require(ROOT_DIR+);
但是,webpack会将其识别为动态需求。有没有一种方法可以让webpack解析ROOT_DIR?我已经尝试了定义插件,但它似乎是在网页解析require之后加载的

问题


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

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


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

在运行webpack和服务器之前,您是否尝试过设置
节点路径
NODE\u PATH=webpack
NODE\u PATH=NODE server.js
我已经试过了。但问题是这里发生了什么(并不总是最好的黑客),这里也有同样的问题。。你找到解决办法了吗?