Rails, Browserify 和 React with coffeescript
Rails, Browserify and React with coffeescript
我正在尝试使用 npm 设置 React,因此在没有 rails-react gem 的情况下使用它。
我已经安装了 Browserify and react and react-dom。它似乎有效,我能够 运行 一个简单的 'hello world' 示例。'
现在谈谈更复杂的事情。我已经有很多用 rails-react 加载的组件,我需要转换它们。
我已经创建并初始化脚本 (init.js.coffee)
React = require('react')
ReactDOM = require('react-dom')
PhotoRoot = require('photo_root')
和一个组件 (photo_root.js.coffee)
module.exports = React.createClass
getInitialState: ->
null
getDefaultProps: ->
null
showCard: (photoId) ->
this.refs.card.setPhotoId photoId
render: ->
React.DOM.div {className: 'photo-root'},
React.createElement PhotoGrid, showCard: @showCard
React.createElement PhotoActionCard, photoId: 615, ref: "card"
这两个文件在同一个文件夹中。
当我 运行 这样做时,我从 BrowserifyRails::BrowserifyError 得到一个错误:
Error while running `/Users/mh/rails_projects/phototank/node_modules/.bin/browserifyinc -t coffeeify --extension=".js.coffee" --list --cachefile=/Users/mh/rails_projects/phototank/tmp/cache/browserify-rails/browserifyinc-cache.json -o "/Users/mh/rails_projects/phototank/tmp/cache/browserify-rails/output20170205-9947-edkf1y" -`:
events.js:154
throw er; // Unhandled 'error' event
^
Error: Cannot find module 'photo_root' from '/Users/mh/rails_projects/phototank/app/assets/javascripts/components'
at /Users/mh/rails_projects/phototank/node_modules/browser-resolve/node_modules/resolve/lib/async.js:46:17
它正在正确的位置寻找 'photo_root',但没有找到。它与扩展名有关吗?我正在使用 coffeescript!!
赞赏!!
好吧,这很简单:
PhotoRoot = require('photo_root')
应该是
PhotoRoot = require('./photo_root')
我正在尝试使用 npm 设置 React,因此在没有 rails-react gem 的情况下使用它。 我已经安装了 Browserify and react and react-dom。它似乎有效,我能够 运行 一个简单的 'hello world' 示例。'
现在谈谈更复杂的事情。我已经有很多用 rails-react 加载的组件,我需要转换它们。
我已经创建并初始化脚本 (init.js.coffee)
React = require('react')
ReactDOM = require('react-dom')
PhotoRoot = require('photo_root')
和一个组件 (photo_root.js.coffee)
module.exports = React.createClass
getInitialState: ->
null
getDefaultProps: ->
null
showCard: (photoId) ->
this.refs.card.setPhotoId photoId
render: ->
React.DOM.div {className: 'photo-root'},
React.createElement PhotoGrid, showCard: @showCard
React.createElement PhotoActionCard, photoId: 615, ref: "card"
这两个文件在同一个文件夹中。
当我 运行 这样做时,我从 BrowserifyRails::BrowserifyError 得到一个错误:
Error while running `/Users/mh/rails_projects/phototank/node_modules/.bin/browserifyinc -t coffeeify --extension=".js.coffee" --list --cachefile=/Users/mh/rails_projects/phototank/tmp/cache/browserify-rails/browserifyinc-cache.json -o "/Users/mh/rails_projects/phototank/tmp/cache/browserify-rails/output20170205-9947-edkf1y" -`:
events.js:154
throw er; // Unhandled 'error' event
^
Error: Cannot find module 'photo_root' from '/Users/mh/rails_projects/phototank/app/assets/javascripts/components'
at /Users/mh/rails_projects/phototank/node_modules/browser-resolve/node_modules/resolve/lib/async.js:46:17
它正在正确的位置寻找 'photo_root',但没有找到。它与扩展名有关吗?我正在使用 coffeescript!!
赞赏!!
好吧,这很简单:
PhotoRoot = require('photo_root')
应该是
PhotoRoot = require('./photo_root')