当我使用 browserify-rails 需要它时,formsy-react npm 模块会破坏 rails 应用程序
formsy-react npm module breaks rails app when I require it using browserify-rails
我有 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
修正。
我有 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
修正。