Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/420.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在Phoenix项目中设置早午餐配置以正确加载路由器?_Javascript_Reactjs_React Router_Brunch_Phoenix Framework - Fatal编程技术网

Javascript 如何在Phoenix项目中设置早午餐配置以正确加载路由器?

Javascript 如何在Phoenix项目中设置早午餐配置以正确加载路由器?,javascript,reactjs,react-router,brunch,phoenix-framework,Javascript,Reactjs,React Router,Brunch,Phoenix Framework,我创建了新的Phoenix 1.0.0项目,初始化了bower文件并安装了React js,在添加React路由器之前一切都很好。现在我无法消除以下错误: ReactRouter.js:2108 Uncaught TypeError: Cannot read property 'PropTypes' of undefined ReactRouter.js:10 Uncaught TypeError: Cannot read property 'React' of undefined 我认为这

我创建了新的Phoenix 1.0.0项目,初始化了bower文件并安装了React js,在添加React路由器之前一切都很好。现在我无法消除以下错误:

ReactRouter.js:2108 Uncaught TypeError: Cannot read property 'PropTypes' of undefined
ReactRouter.js:10 Uncaught TypeError: Cannot read property 'React' of undefined
我认为这与早午餐配置或react router和ES6有关,我花了很多时间,但找不到好的解决方案

这是我当前的早午餐配置:

exports.config = {
  files: {
    javascripts: {
      joinTo: "js/app.js",
      order: {
        before: [
          /bower_components/,
          /web\/static\/vendor/
        ]
      }
    },
    stylesheets: {
      joinTo: "css/app.css"
    },
    templates: {
      joinTo: "js/app.js"
    }
  },
  conventions: {
    assets: /^(web\/static\/assets)/
  },
  paths: {
    watched: [
      "deps/phoenix/web/static",
      "web/static",
      "test/static"
    ],
    public: "priv/static"
  },
  plugins: {
    babel: {
      ignore: [/^(web\/static\/vendor)|(bower_components)/]
    }
  },
  modules: {
    autoRequire: {
      "js/app.js": ["web/static/js/app"]
    }
  },
  npm: {
    enabled: true
  }
};
当我从被忽略的插件中删除
|(bower_组件)
时,我将得到以下错误:

ReactRouter.js:2108 Uncaught TypeError: Cannot read property 'PropTypes' of undefined
ReactRouter.js:10 Uncaught TypeError: Cannot read property 'React' of undefined
当我修改早午餐配置并将供应商添加到如下约定中时:

conventions: {
  assets: /^(web\/static\/assets)/,
  vendor: [/^(web\/static\/vendor)/]
},
并添加到app.js导入的直接路径:

import React from "bower_components/react/react";
import { Router, Route, Link } from 'bower_components/react-router/build/umd/ReactRouter';
然后它将不会在react路由器模块中加载react:

Uncaught Error: Cannot find module "react" from "bower_components/react-router/build/umd/ReactRouter"
如何使用React和React路由器建立Phoenix项目

bower.json:

{
  "name": "test",
  "version": "0.0.0",
  "authors": ["luzny"],
  "license": "MIT",
  "ignore": [
    "**/.*",
    "node_modules",
    "bower_components",
    "test",
    "tests"
  ],
  "dependencies": {
    "react": "~0.13.3",
    "react-router": "~0.13.3"
  }
}

这里有一个讨论:(不确定是否有帮助)谢谢,但现在我认为它与react router和ES6有更多的关系,但仍有可能我在早午餐配置中做了一些错误的事情。@JoséValim我找到了非常好的解决方案!这就是为什么我们允许你带任何你想要的东西,JS生态系统现在太支离破碎了。