Я использую драгоценный камень react_on_rails, чтобы добавить интерфейс реакции к нашему существующему бэкэнду rails.У меня много проблем, чтобы все заработало.Потребовался целый день только для того, чтобы заставить гем работать должным образом, потому что он не работал корректно из коробки ... Я наконец-то заставил мой сервер Rails правильно запускаться (через мастера), но он выдает ошибку, когда загружает веб-упаковщик, сошибка: environment.toWebpackConfig is not a function
Я искал во всем Google, чтобы решить эту проблему, но ни одна из статей, которые я прочитал, не помогла.Кто-нибудь знает, что я делаю не так?
Полная трассировка:
16:25:11 client.1 | /Users/elliot/ft_wilderness_patrol/server/current/node_modules/webpack-cli/bin/cli.js:244
16:25:11 client.1 | throw err;
16:25:11 client.1 | ^
16:25:11 client.1 |
16:25:11 client.1 | TypeError: environment.toWebpackConfig is not a function
16:25:11 client.1 | at Object.<anonymous> (/Users/elliot/ft_wilderness_patrol/server/current/config/webpack/development.js:5:30)
16:25:11 client.1 | at Module._compile (/Users/elliot/ft_wilderness_patrol/server/current/node_modules/v8-compile-cache/v8-compile-cache.js:178:30)
16:25:11 client.1 | at Object.Module._extensions..js (internal/modules/cjs/loader.js:700:10)
16:25:11 client.1 | at Module.load (internal/modules/cjs/loader.js:599:32)
16:25:11 client.1 | at tryModuleLoad (internal/modules/cjs/loader.js:538:12)
16:25:11 client.1 | at Function.Module._load (internal/modules/cjs/loader.js:530:3)
16:25:11 client.1 | at Module.require (internal/modules/cjs/loader.js:637:17)
16:25:11 client.1 | at require (/Users/elliot/ft_wilderness_patrol/server/current/node_modules/v8-compile-cache/v8-compile-cache.js:159:20)
16:25:11 client.1 | at WEBPACK_OPTIONS (/Users/elliot/ft_wilderness_patrol/server/current/node_modules/webpack-cli/bin/convert-argv.js:133:13)
16:25:11 client.1 | at requireConfig (/Users/elliot/ft_wilderness_patrol/server/current/node_modules/webpack-cli/bin/convert-argv.js:135:6)
16:25:11 client.1 | at /Users/elliot/ft_wilderness_patrol/server/current/node_modules/webpack-cli/bin/convert-argv.js:142:17
16:25:11 client.1 | at Array.forEach (<anonymous>)
16:25:11 client.1 | at module.exports (/Users/elliot/ft_wilderness_patrol/server/current/node_modules/webpack-cli/bin/convert-argv.js:140:15)
16:25:11 client.1 | at yargs.parse (/Users/elliot/ft_wilderness_patrol/server/current/node_modules/webpack-cli/bin/cli.js:241:39)
16:25:11 client.1 | at Object.parse (/Users/elliot/ft_wilderness_patrol/server/current/node_modules/webpack-cli/node_modules/yargs/yargs.js:563:18)
16:25:11 client.1 | at /Users/elliot/ft_wilderness_patrol/server/current/node_modules/webpack-cli/bin/cli.js:219:8
16:25:11 client.1 | at Object.<anonymous> (/Users/elliot/ft_wilderness_patrol/server/current/node_modules/webpack-cli/bin/cli.js:538:3)
16:25:11 client.1 | at Module._compile (internal/modules/cjs/loader.js:689:30)
16:25:11 client.1 | at Object.Module._extensions..js (internal/modules/cjs/loader.js:700:10)
16:25:11 client.1 | at Module.load (internal/modules/cjs/loader.js:599:32)
16:25:11 client.1 | at tryModuleLoad (internal/modules/cjs/loader.js:538:12)
16:25:11 client.1 | at Function.Module._load (internal/modules/cjs/loader.js:530:3)
16:25:11 client.1 | at Module.require (internal/modules/cjs/loader.js:637:17)
16:25:11 client.1 | at require (internal/modules/cjs/helpers.js:20:18)
16:25:11 client.1 | at Object.<anonymous> (/Users/elliot/ft_wilderness_patrol/server/current/node_modules/webpack/bin/webpack.js:155:2)
16:25:11 client.1 | at Module._compile (internal/modules/cjs/loader.js:689:30)
16:25:11 client.1 | at Object.Module._extensions..js (internal/modules/cjs/loader.js:700:10)
16:25:11 client.1 | at Module.load (internal/modules/cjs/loader.js:599:32)
16:25:11 client.1 | at tryModuleLoad (internal/modules/cjs/loader.js:538:12)
16:25:11 client.1 | at Function.Module._load (internal/modules/cjs/loader.js:530:3)
16:25:11 client.1 | exited with code 1
16:25:11 system | sending SIGTERM to all processes
16:25:11 web.1 | - Gracefully stopping, waiting for requests to finish
16:25:11 web.1 | === puma shutdown: 2018-10-25 16:25:11 -0700 ===
16:25:11 web.1 | - Goodbye!
16:25:11 web.1 | Exiting
16:25:11 web.1 | terminated by SIGTERM
Файл, вызывающий ошибку:
// development.js
process.env.NODE_ENV = process.env.NODE_ENV || 'development'
const environment = require('./environment')
module.exports = environment.toWebpackConfig () Другой файл, который, как мне кажется, может понадобиться для решения этой проблемы:
// environment.js
const { environment } = require('@rails/webpacker')
environment.config.set('resolve.extensions', ['.jsx'])
environment.loaders.append('jsx', {
test: /\.jsx$/,
use: 'babel-preset-react'
})
module.exports = {
environment,
}
Первоначально, когда я впервые получил сервер Rails для работы с гемом реагировать на_он_раилы, он выдавал ошибку, сообщающую unexpected token <div>
, чтобыло связано с тем, что по умолчанию оно не включает расширение jsx в оператор импорта начальной страницы 'hello world', а также не разрешает расширение в конфигурационном файле webpacker, которое я сделал сам, и ядогадываясь, что, может быть, я не правильно сделал?
В моем исследовании у меня сложилось впечатление, что babel необходим для использования расширения jsx?Это правильно?Я заметил в разделе проблем @ rails / webpacker, они отметили, что set
устарела, в пользу append
/ prepend
, однако, если я пытаюсь использовать любой из них для разрешения расширения, это приводит к ошибкам при разрешении.линия расширения, говорящая environment.prepend
, не является функцией.Мне кажется, что я правильно разрешаю расширение, но, может быть, мне не хватает чего-то другого, необходимого для использования расширения jsx?
Любой вклад приветствуется, спасибо!