目标:我正在尝试在 nodejs 和 webpack 中设置项目,以便require函数可以将项目目录用作root用户,所以我可以要求在两个环境中相对于项目根绝对路径(同构使用即React服务器+客户端渲染)。
情况:在webpack中,您可以设置config.resolve.root以使其正常工作,但在nodejs中,最佳做法是不覆盖/修改global.require。
提案1 :我可以制作新的全局功能
global.p_require
所以它在节点中工作;但是,我找不到让webpack解析的方法" p_require"进入 __ webpack_require __ 而不更改webpack源代码。
提案2 :我可以制作新的全局变量
global.ROOT_DIR = process.cwd()
所以它在节点中起作用
require(ROOT_DIR + <relative path to root>);
然而,webpack会将此识别为动态需求。有没有办法让webpack解析ROOT_DIR?我已经尝试了定义插件,但似乎在webpack解析require之后加载。
问题
任何人都有解决方案或面临同样的问题?
答案 0 :(得分:1)
我通过让webpack做更多事来解决这个问题;而不是&#34; node和webpack&#34;,它是&#34; webpack:客户端和服务器&#34;。我有webpack为客户端做一个构建和服务器的构建(后者使用&#39; node&#39;作为它在config中的目标属性)。可以轻松自定义webpack使用的目录,因此您可以让它完成工作并为节点创建构建。
在服务器上呈现时,您只需要编译的服务器版本。如果您需要将一些内容从服务器传递到webpack构建的应用程序,请将其连接到用于服务器构建的入口点 - webpack将其构建为commonJs模块,因此您的入口点可以导出任何内容是服务器需要渲染时最方便的界面。