Javascript 如何在Phoenix项目中设置早午餐配置以正确加载路由器?
我创建了新的Phoenix 1.0.0项目,初始化了bower文件并安装了React js,在添加React路由器之前一切都很好。现在我无法消除以下错误: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 我认为这
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生态系统现在太支离破碎了。