2017-05-12 12 views
1

以下のエラーコードが表示されていますが、これを修正する方法はわかりません。私は実際に私のウェブサイト上で反応するようにwebpackを設定することになっているのか分かりません。設定が非常に混乱します。私はhttps://github.com/shakacode/react_on_railsのガイドを使用してみましたが、この問題を解決するために非常に役立つものは見つかりませんでした。Webpacker React.jsセットアップ問題アセットがHerokuデプロイ時にコンパイルされない

/bin/webpack.rb

#!/usr/bin/env ruby 
$stdout.sync = true 

require "shellwords" 
require "yaml" 

ENV["RAILS_ENV"] ||= "development" 
RAILS_ENV = ENV["RAILS_ENV"] 

ENV["NODE_ENV"] ||= RAILS_ENV 
NODE_ENV = ENV["NODE_ENV"] 

APP_PATH    = File.expand_path("../", __dir__) 
CONFIG_PATH   = File.join(APP_PATH, "config/webpack/paths.yml") 

begin 
    paths   = YAML.load(File.read(CONFIG_PATH))[NODE_ENV] 

    NODE_MODULES_PATH = File.join(APP_PATH.shellescape, paths["node_modules"]) 
    WEBPACK_CONFIG_PATH = File.join(APP_PATH.shellescape, paths["config"]) 
rescue Errno::ENOENT, NoMethodError 
    puts "Configuration not found in config/webpack/paths.yml" 
    puts "Please run bundle exec rails webpacker:install to install webpacker" 
    exit! 
end 

WEBPACK_BIN = "#{NODE_MODULES_PATH}/.bin/webpack" 
WEBPACK_CONFIG = "#{WEBPACK_CONFIG_PATH}/#{NODE_ENV}.js" 

newenv = { "NODE_PATH" => NODE_MODULES_PATH } 
cmdline = [WEBPACK_BIN, "--config", WEBPACK_CONFIG] + ARGV 

Dir.chdir(APP_PATH) do 
    exec newenv, *cmdline 
end 

エラーメッセージ

remote:  Compiling webpacker assets 
remote:  ./bin/webpack:34:in `exec': No such file or directory - /tmp/build_5db4fafc0f5caa97d269dc06d8db2330/node_modules/.bin/webpack (Errno::ENOENT) 
remote:  from ./bin/webpack:34:in `block in <main>' 
remote:  from ./bin/webpack:33:in `chdir' 
remote:  from ./bin/webpack:33:in `<main>' 
remote:  rake aborted! 
remote:  JSON::ParserError: A JSON text must at least contain two octets! 
remote:  /tmp/build_5db4fafc0f5caa97d269dc06d8db2330/vendor/bundle/ruby/2.2.0/gems/json-1.8.6/lib/json/common.rb:155:in `initialize' 
remote:  /tmp/build_5db4fafc0f5caa97d269dc06d8db2330/vendor/bundle/ruby/2.2.0/gems/json-1.8.6/lib/json/common.rb:155:in `new' 
remote:  /tmp/build_5db4fafc0f5caa97d269dc06d8db2330/vendor/bundle/ruby/2.2.0/gems/json-1.8.6/lib/json/common.rb:155:in `parse' 
remote:  /tmp/build_5db4fafc0f5caa97d269dc06d8db2330/vendor/bundle/ruby/2.2.0/bundler/gems/webpacker-42db6f7806f2/lib/tasks/webpacker/compile.rake:14:in `block (2 levels) in <top (required)>' 
remote:  /tmp/build_5db4fafc0f5caa97d269dc06d8db2330/vendor/bundle/ruby/2.2.0/bundler/gems/webpacker-42db6f7806f2/lib/tasks/webpacker/compile.rake:30:in `block in <top (required)>' 
remote:  /tmp/build_5db4fafc0f5caa97d269dc06d8db2330/vendor/bundle/ruby/2.2.0/gems/rake-12.0.0/exe/rake:27:in `<top (required)>' 
remote:  Tasks: TOP => webpacker:compile 
remote:  (See full trace by running task with --trace) 
remote: ! 
remote: !  Precompiling assets failed. 
remote: ! 
+0

が、(良いです)tempディレクトリに構築しているように見えますが、それはWebPACKのを呼び出す前に 'NPMのinstall'を実行していないよう:

は、ここで私のもの。 –

+0

これは私のルートファイルpackage.jsonに含める必要がありますか?私はそれを以下のスクリプトのような場所に置くことができますか? "スクリプト":{ "postinstall": "cd client &&糸のインストール"、 "rails-server": "echo 'http:// localhost:3000/hello_world' && foreman start -f Procfile.dev"、 "test": "rspec" }、 – ByteMe

+0

私はこの環境に精通していません。渡す際のエラーの原因が 'No such file or directory - /tmp/build_5db4fafc0f5caa97d269dc06d8db2330/node_modules/.bin/Webpackでした私はそれを指摘すると思った。 'exec newenv、" npm "、" install "と試してみることもできますが、それはちょうど私が推測していることであり、慣用的ではないかもしれません。ネストされた 'package.json'を持っているなら、あなたのアイデアはうまくいくはずです。 –

答えて

1

あなたはレール5.1.0を使用している場合、このガイドでは、より適切かもしれません。

https://github.com/rails/webpacker#heroku

理由はreact_on_railsは異なり、多くの資産を扱うwebpacker-LITEと呼ばれるwebpackerの独自のフォークを使用していることです。

#!/usr/bin/env ruby 
$stdout.sync = true 

require "shellwords" 
require "yaml" 

ENV["RAILS_ENV"] ||= "development" 
RAILS_ENV = ENV["RAILS_ENV"] 

ENV["NODE_ENV"] ||= RAILS_ENV 
NODE_ENV = ENV["NODE_ENV"] 

APP_PATH   = File.expand_path("../", __dir__) 
NODE_MODULES_PATH = File.join(APP_PATH, "node_modules") 
WEBPACK_CONFIG = File.join(APP_PATH, "config/webpack/#{NODE_ENV}.js") 

unless File.exist?(WEBPACK_CONFIG) 
    puts "Webpack configuration not found." 
    puts "Please run bundle exec rails webpacker:install to install webpacker" 
    exit! 
end 

newenv = { "NODE_PATH" => NODE_MODULES_PATH.shellescape } 
cmdline = ["yarn", "run", "webpack", "--", "--config", WEBPACK_CONFIG] + ARGV 

Dir.chdir(APP_PATH) do 
    exec newenv, *cmdline 
end 
関連する問題