我结合了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/