Я хочу реализовать рендеринг на стороне сервера для моего приложения ReactJS. Я использую react-router
. Я принимаю routes.js
как точку входа в webpack и компилирую с опцией output.libraryTarget = "commonjs2"
. Тогда мне требуется результат компиляции в сценарии NodeJS для рендеринга. Но у меня ошибка en. WebPack модули обруча в следующем коде:Выполнять пакет, скомпилированный в NodeJS
/* 277 */
/***/ function(module, exports, __webpack_require__) {
/* WEBPACK VAR INJECTION */(function(Buffer, global) {
if (global.foo) {
/* ... */
}
/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(277).Buffer, (function() { return this; }())))
/***/ }
Когда NodeJS пытается выполнить (function() { return this; }())
его возвращение undefined
. В браузере он вернет window
. Почему webpack использует такой код обертки? Как заставить этот код работать в NodeJS?
Я использую node-clone как внешний lib. Он не использует никакие другие libs как зависимость. Но webpack в своем комплекте делает buffer в качестве зависимости для этой библиотеки. И внутри кода buffer
у меня есть ошибка Cannot read property 'TYPED_ARRAY_SUPPORT' of undefined
. Это происходит потому, что в узлеJS (function() { return this; }())
возвращается undefined
.
Вы пробовали 'цель:«node'' в вашем WebPack конфигурации? –
Это именно то, что я ищу :) Спасибо @JoshDavidMiller –
Отлично! Я поставил это как ответ ниже, чтобы мы могли позволить другим узнать, что он решен. –