关于将React应用程序连接到Rails 5 API,我正在关注this tutorial。在创建Profile.dev
部分的过程中,一切都很顺利,更确切地说是创建了用于管理本地运行开发和生产的rake任务。
Procfile.dev
看起来像这样
web: cd client && PORT=3000 npm start
api: PORT=3001 && bundle exec rails s
按照说明操作,我将start.rake
添加到/lib/tasks
,如下所示:
namespace :start do
task :development do
exec 'foreman start -f Procfile.dev'
end
desc 'Start production server'
task :production do
exec 'NPM_CONFIG_PRODUCTION=true npm run postinstall && foreman start'
end
end
desc 'Start development server'
task :start => 'start:development'
然后我将foreman
添加到开发组中的gemfile并按照指示运行bundle install
。
group :development do
gem 'listen', '~> 3.0.5'
# Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
gem 'spring'
gem 'spring-watcher-listen', '~> 2.0.0'
gem 'foreman', '~> 0.82.0'
end
然后教程说要运行
bin/rake start
导致此错误。
12:49:57 web.1 | const spawn = require('react-dev-utils/crossSpawn');
12:49:57 web.1 | ^^^^^
12:49:57 web.1 | SyntaxError: Use of const in strict mode.
12:49:57 web.1 | at exports.runInThisContext (vm.js:73:16)
12:49:57 web.1 | at Module._compile (module.js:443:25)
12:49:57 web.1 | at Object.Module._extensions..js (module.js:478:10)
12:49:57 web.1 | at Module.load (module.js:355:32)
12:49:57 web.1 | at Function.Module._load (module.js:310:12)
12:49:57 web.1 | at Function.Module.runMain (module.js:501:10)
12:49:57 web.1 | at startup (node.js:129:16)
12:49:57 web.1 | at node.js:814:3
我环顾四周找出问题可能是什么,但到目前为止我发现的唯一建议是升级Node.js,我已经尝试过(v4.x和最新发布时间v8.2.1) )。
这些节点升级都没有解决问题。此外,当错误指向cross-spawn
包时,我认为可以在package.json
文件中更改此包的版本。但是Create-React-App似乎以某种方式抽象已安装的软件包,这使得这项工作变得不那么简单。
非常感谢任何通过此错误的帮助!