Javascript 将供应商js文件(来自wrap引导)合并到Rails 4中

Javascript 将供应商js文件(来自wrap引导)合并到Rails 4中,javascript,ruby-on-rails,twitter-bootstrap,heroku,Javascript,Ruby On Rails,Twitter Bootstrap,Heroku,我很难理解如何将供应商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/ale

我很难理解如何将供应商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')
在我的app/assets/javascript文件夹中,我有一个名为application.js的文件。在该文件中,我有:

//= require npm
在我的控制台检查器中,我可以看到合并npm文件的错误。错误消息是:

npm.self-f66d504….js?body=1:2 Uncaught ReferenceError: require is not defined
我想这可能和……有关。。在npm.js文件中列出的引用

有人知道如何将其应用于rails 4(托管在heroku上)吗

非常感谢。

您的JS中的
require(…)
语句是CommonJS格式的(因此顶部的注释),通常在Node.JS中使用,但在浏览器环境中不受支持,这就是为什么您在inspector中遇到该错误的原因

一个选项是使用Browserify和Grunt将这些JS文件链接并编译成一个npm.JS文件(尽管我建议使用不同的名称)。您是否已经在使用browserify_rails、Grunt或类似工具来管理JS文件

如果您没有使用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...
这将生成与上面示例相同的JS

最后,确保
包含在
config.assets.path
config变量中

JS中的那些
require(…)
语句是CommonJS格式的(因此顶部的注释),通常在Node.JS中使用,但在浏览器环境中不受支持,这就是为什么您在inspector中会出现该错误

一个选项是使用Browserify和Grunt将这些JS文件链接并编译成一个npm.JS文件(尽管我建议使用不同的名称)。您是否已经在使用browserify_rails、Grunt或类似工具来管理JS文件

如果您没有使用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...
这将生成与上面示例相同的JS

最后,确保
包含在
config.assets.path
config变量中