常见问题与常见问题
编辑该页面常见问题与常见问题
我如何部署安可资产?
有两个重要的事情要记住当部署你的资产。
1)编制资产用于生产
优化你的资产生产运行:
1
美元/ node_modules /。bin /安可生产
会贬低你的资产,让其他的性能优化。耶!
但是,你运行这个命令在服务器应该什么?这取决于你如何部署。例如,您可以执行这个本地(或构建服务器上),和使用rsync或者其他东西生成的文件转移到生产服务器。或者,你可以把你的文件在您的生产服务器上(例如通过git拉
),然后运行这个命令生产(理想情况下,前交通支安打您的代码)。在这种情况下,您将需要安装节点。js在生产服务器上。
2)只部署了资产
的只有文件需要部署到生产服务器最后,建立资产(如公共/构建
目录)。你做不需要安装节点。js、部署webpack.config.js
,node_modules
目录或甚至你的源资产文件,除非你计划跑步安可生产
在你的生产机器。一旦你的资产,这些都是只有件事需要住在生产服务器上。
我需要安装节点。js在我的生产服务器?
不,除非你打算生产服务器上建立你的生产资产,这是不可取的。看到我如何部署安可资产?。
我应该致力于git哪些文件?我应该忽略,哪些?
你应该提交所有的文件到git,除了node_modules /
目录和构建文件。你的.gitignore
文件应包括:
1 2 3
/ node_modules / #不管什么路你传递给Encore.setOutputPath() /公共/构建
你应该提交所有源资产文件,package.json
和yarn.lock
或package-lock.json
。
我的应用住子目录下
如果你的应用并不住在您的web服务器的根(即它生活在子目录下,像/ myAppSubdir
),您将需要配置,当调用Encore.setPublicPath ()
:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
/ / webpack.config.jsEncore // ... .setOutputPath('public/build/').setPublicPath(/构建)+ / / *你*如此公共道路+ .setPublicPath (/ myAppSubdir /构建)+ / /这是现在需要的,这样你的清单。json钥匙仍“构建/ foo.js”+ / /(这是一个文件,使用Symfony的资产()的函数)ob娱乐下载+ .setManifestKeyPrefix(“构建”);
如果你使用encore_entry_script_tags ()
和encore_entry_link_tags ()
(或树枝的快捷方式通过entrypoints.json处理你的资产以其它方式)你完成!这些快捷方式的方法从一个读取entrypoints.json文件现在包含子目录。
“jQuery没有定义”或“美元没有定义”
这个错误发生在您的代码(或者一些库,您正在使用)的预期美元
或jQuery
是一个全局变量。但是,当你使用Webpack和要求(“jquery”)
,没有全局变量设置。
解决取决于如果错误发生在您的代码或在你使用一些第三方代码。看到jQuery插件和遗留应用程序修复。
未捕获ReferenceError: webpackJsonp不是定义
如果你有这种错误,这可能是因为你忘了添加脚本
标记runtime.js
文件,其中包含Webpack的运行时。如果你使用encore_entry_script_tags ()
嫩枝功能,这应该不会发生:文件脚本标记自动呈现。
这种依赖性没有发现:一些模块/路径/ / file.js
通常,当你安装一个包通过纱或npm,你可以使用它需要/导入。例如,在运行纱添加respond.js
或npm安装respond.js
,你想要求模块:
1
需要(“respond.js”);
但是,而不是工作,你看到一个错误:
这种依赖性不存在:
- 回应。js /资产/ app.js
通常,一个包将“广告”的“主要”文件添加一个主要
它的关键package.json
。但有时,老库不会有这个问题。相反,你需要特别需要你所需要的文件。在这种情况下,您应该使用位于文件node_modules respond.js / / respond.src.js不在座位上
。你可以要求通过:
1 2
/ /需要non-minified文件尽可能需要(“respond.js /桌子/ respond.src.js”);
我需要第三方模块上执行巴别塔
针对性能、安可不过程内库node_modules /
通过巴别塔。但是,你可以通过改变configureBabel ()
方法。看到配置巴别塔获取详细信息。
如何整合我再来一个我的IDE配置吗?
在PhpStorm Webpack集成和其他ide使开发更有效率(例如通过解决别名)。然而,你可能会面对这个错误:
1 2 3 4
Encore.setOutputPath()不能,因为运行时环境似乎不配置。确保你使用安可可执行或叫Encore.configureRuntimeEnvironment()首先如果你故意不直接调用安可。
不能只因为安可运行时环境配置运行时(如在执行纱安可dev
)。打电话来解决这个问题Encore.isRuntimeEnvironmentConfigured ()
和Encore.configureRuntimeEnvironment ()
方法:
1 2 3 4 5 6 7 8
/ / webpack.config.js常量安可=需要(“@ob娱乐下载symfony / webpack-encore”)如果(! Encore.isRuntimeEnvironmentConfigured ()) {Encore.configureRuntimeEnvironment (process.env。NODE_ENV | |“开发”);}/ /……其余的安可配置
我的测试是失败的entrypoints.json
文件
安装后再来一次,你可能会看到下面的错误当在本地运行测试或在你的持续集成服务器:
1 2 3 4
PHP未捕获异常树枝\错误\ RuntimeError:“已经抛出了异常,在模板的渲染(“找不到从Webpack entrypoints文件:文件" / var / www / html /公共/构建/ entrypoints。json”并不存在。
这一切都因为你没有构建安可资产,因此没有entrypoints.json
文件。要解决此错误,建立安可资产或设置strict_mode
选项假
(这可以防止安可的树枝函数触发时没有异常entrypoints.json
文件):
1 2 3 4
#配置/包/测试/ webpack_encore.yamlwebpack_encore:strict_mode:假#……