2016-03-28 15 views
1

ベンダーのjsアセットをRails 4アプリケーションに組み込む方法を理解するのは難しいです。ベンダーjsファイル(ラップブートストラップから)をRails 4に組み込む

私のアプリはブートストラップを使用しています。ベンダーファイルには、npm.jsと呼ばれるjsファイルが含まれています。そのファイルには次のものがあります。

// This file is autogenerated via the `commonjs` Grunt task. You can require() this file in a CommonJS environment. 
require('../../js/transition.js') 
require('../../js/alert.js') 
require('../../js/button.js') 
require('../../js/carousel.js') 
require('../../js/collapse.js') 
require('../../js/dropdown.js') 
require('../../js/modal.js') 
require('../../js/tooltip.js') 
require('../../js/popover.js') 
require('../../js/scrollspy.js') 
require('../../js/tab.js') 
require('../../js/affix.js') 

私のアプリ/ assets/javascriptフォルダには、application.jsというファイルがあります。このファイルには、私が持っている:私のコンソールインスペクタで

//= require npm 

を、私はNPMファイルの取り込みでエラーを見ることができます。エラーメッセージは次のとおりです。

npm.self-f66d504….js?body=1:2 Uncaught ReferenceError: require is not defined 

npm.jsファイルに設定されている../...参照と関係があると思います。

これはどのようにレール4(herokuでホストされている)で使用するのに適しているのですか?

ありがとうございました。

答えて

0

JS内のこれらの文は、CommonJS形式(したがって、一番上のコメント)であり、Node.jsでよく使用されますが、ブラウザ環境ではサポートされていないため、インスペクタでそのエラーが発生します。

1つのオプションは、GruntでBrowserifyを使用して、それらのJSファイルのそれぞれを(別の名前を推薦しますが)単一のnpm.jsにリンクしてコンパイルすることです。あなたはすでにJSファイルを管理するためにbrowserify_rails、Grunt、または同様のツールを使用していますか?

あなたは兵卒/ Browserifyで働いていない、または上記のステートメントが不明である場合は、それだけでRailsの資産パイプラインに固執し、おそらく最良かつ最も簡単だ場合:

のでapplication.jsになるでしょう:

//= require('<path>/js/transition.js') 
//= require('<path>/js/alert.js') 
//= require('<path>/js/button.js') 
//= require('<path>/js/carousel.js') 
// etc... 

の代わりに:

//= require npm 

そして、これは、上記のあなたのサンプルと同等のJSを生成する必要があります。

最後に、<path>config.assets.paths設定変数に含まれていることを確認してください。

関連する問題