浏览器化使用咕噜咕噜的 ReacjJS 和 yii2 供应商路径
Browserify working with grunt ReacjJS and yii2 vendor path
Background
我正在尝试使用浏览器设置一个 Yii2 项目来管理 JS 依赖项。由于 Yii2 将 JS 和 CSS 依赖项放在 vendor/bower
目录中,我正在尝试将 Browserify 配置为将其用作供应商依赖项的包含路径。
我有一个 Grunt 任务设置来运行我的 js 构建。
问题
当我尝试使用 Grunt 任务编译我的 js 文件时,我在尝试查找React
时遇到错误(我的 js 项目中的第一个包含)。
Error: Cannot find module 'react' from '{my-working-directory}/modules/contact/asset/js'
法典
我已经安装了 React(bower 安装)并在我的 vendor/bower
目录中可用。我正在尝试构建的项目 JS src 文件位于 modules/contact/asset/js/
.在我的 JS 文件中,我在文件顶部包含 React。
modules/contact/asset/js/main.jsa
var React = require('react');
var component = React.createClass({
render: function() {
...
}
});
...
我已经使用包含路径设置了我的 Grunt 浏览器化任务,以便浏览器知道如何找到我的包含,我还添加了反应转换,以便将 JSX 编译为 js。
咕噜咕噜.js
...
browserify: {
options: {
transform: [ require('grunt-react').browserify ],
browserifyOptions: {
paths: [
'./vendor/bower/',
'./modules/contact/asset/js/'
]
}
},
client: {
src: [
'./modules/contact/asset/js/*.js'
],
dest: './modules/contact/web/js/main.min.js'
}
},
...
问题
为什么浏览器无法找到反应或其他包含?
您不能也不应该从 Web 访问vendor
目录。如果您的网站从web
文件夹加载,那么您只能访问目录中web
文件和文件夹。
您可以使用AssetBundle
从目录中注册脚本vendor/bower
:
class ReactAsset extends AssetBundle
{
public $sourcePath = '@bower';
public $js = [
'react/react.js'
];
}
在文档中查看更多信息。
- 什么's是连接供应商js文件的最佳方式
- Yii2从点击链接开始加载模式
- 如何在Webpack中从导出中排除供应商模块peerDependencies
- 如何在Yii2资产捆绑包中使用JSX文件
- Yii2从js脚本的页面上添加来自供应商文件夹的图像、css、js文件
- 如何显示从Ajax请求返回的数组.使用Yii2
- 使用yii2表单等待ajax响应
- 如何刷新表单的yii2前端验证
- 是否可以将谷歌分析数据发送给供应商
- 供应商前缀 CSS 解决方法(引导程序)的速度和大小
- Yii2:动态获取字段的 ID
- 通过 Yii2 表单插入数据时获取空值
- Yii2:用按钮调用 javascript 函数
- yii2不允许ajax访问会话
- Yii2 Jquery onchange下拉列表
- Yii2中的Ajax+控制器操作
- 当用户在yii2中键入金额时,如何计算10%的折扣值
- yii2:依赖于Action的条件显示/显示字段
- 模态窗口yii2中的Ajax验证数据
- 浏览器化使用咕噜咕噜的 ReacjJS 和 yii2 供应商路径