javascript - 当我需要使用 browserify-rails 时,formsy-react npm 模块会破坏 Rails 应用程序

标签 javascript ruby-on-rails ruby node.js browserify

我结合了rails/sprockets 和browserify,这确实使调试变得复杂。看起来我对 formsy-react 有问题,但对其他模块没有问题。

这有效:

//= require mysprocketslibs
window.mymodule = require('mymodule');
mymodule.simplefn();

(我编写了一个简单的模块来测试这一点,并且另一个第三方模块也可以工作)

但是当我在 Rails 应用程序的 JS 中需要 formsy-react 时出现错误:

Uncaught TypeError: Cannot read property '0' of undefined

有问题的行位于 browserify 将代码与 require 包装在函数中的位置:

},{}],"/Users/me/myproject/node_modules/formsy-react/node_modules/form-data-to-object/index.js":[
function(require,module,exports){
arguments[4]["/Users/me/myproject/node_modules/formsy-react-components/node_modules/formsy-react/node_modules/form-data-to-object/index.js"][0].apply(exports,arguments)
},

换句话说,浏览器认为 arguments[4][...form-data-to-object/index.js] 未定义。

文件 index.js 存在于该路径指向的文件系统中。

package.json:

{
   "name": "myproject",
   "private": true,
   "dependencies": {
     "browserify": "~> 10.2.4",
     "browserify-incremental": "^3.0.1",
     "formsy-react": "^0.17.0",
     "react": "^0.14.0",
     "mymodule": "1.0.0"
   },
   "engines": {
      "node": ">= 0.10"
   }
 }

我怀疑这是 formsy-react 问题,因为其他人肯定会遇到这个问题,因为它是在第一次需要模块时立即出现的。

最佳答案

问题是 browserify-rails 缓存依赖项,而我的 application.js 仍然引用之前卸载的模块。在这种情况下,我应该在上面的违规行中发现 formsy-react-components

通过运行rake tmp:cache:clear修复。

关于javascript - 当我需要使用 browserify-rails 时,formsy-react npm 模块会破坏 Rails 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33419098/

相关文章:

javascript - jQuery 从顶部获取高度

ruby-on-rails - Rails 4 不完全支持 CanCan

ruby-on-rails - 无方法错误 : undefined method `new' for BigDecimal:Class

ruby-on-rails - 对这些类型的字符串进行排序的最佳方法是什么?

javascript - 在 Python 程序中包装 Canvas 标签 + javascript 的最简单方法?

php - 将来自各种服务的照片聚合到一个流中

ruby-on-rails - Rspec工厂少女faker不接受专栏

ruby-on-rails - 如何在 rake 任务中使用 "gets"?

ruby-on-rails - Ruby 中的时间差异(以分钟为单位)

javascript - jquery中if语句中如何选择元素