常见问题及常见问题
编辑本页常见问题及常见问题
我如何部署我的安可资产?
在部署资产时,有两件重要的事情需要记住。
1)编译用于生产的资产
通过运行优化您的资产以用于生产:
1
$/ node_modules /。bin /安可生产
这将减少您的资产,并进行其他性能优化。耶!
但是,应该在哪个服务器上运行这个命令呢?这取决于你如何部署。例如,您可以在本地(或在构建服务器上)执行此命令,并使用rsync或者使用其他工具将生成的文件传输到生产服务器。或者,你可以先把你的文件放在你的生产服务器上(例如通过git拉
),然后在生产环境中运行此命令(理想情况下,在流量影响代码之前)。在这种情况下,您需要在生产服务器上安装Node.js。
2)只部署构建的资产
的只有需要部署到生产服务器上的文件是最终构建的资产(例如公共/构建
目录)。你做不需要安装Node.js,部署webpack.config.js
,node_modules
目录甚至您的源资产文件,除非你打算跑步安可生产
在您的生产机器上。一旦你的资产建立起来,这些就是只有需要驻留在生产服务器上的东西。
我需要在生产服务器上安装Node.js吗?
不,除非您计划在生产服务器上构建生产资产,不建议这样做。看到我如何部署我的安可资产?.
我应该提交哪些文件到git?我应该忽略哪一个?
您应该将所有文件提交到git,除了node_modules /
目录和构建的文件。你的.gitignore
文件应包括:
1 2 3
/node_modules/ #你传递给Encore.setOutputPath() /public/build的任何路径
你应该提交所有源资产文件,package.json
而且yarn.lock
或package-lock.json
.
我的应用程序在子目录下
如果你的应用不在你的web服务器的根目录下(例如,它在子目录下,如/ myAppSubdir
),您将需要在调用时配置Encore.setPublicPath ()
:
12 3 4 5 6 7 8 9 10 11 12 13 14
// webpack.config.js Encore // ... .setOutputPath('public/build/').setPublicPath(/构建)+ //这是你的*真实*公共路径+ .setPublicPath (/ myAppSubdir /构建)+ //这是现在需要的,这样你的manifest。Json键仍然是' build/foo.js '+ // (Symfony's ' asset() '函数使用的文件)ob娱乐下载+ .setManifestKeyPrefix(“构建”);
如果你在用encore_entry_script_tags ()
而且encore_entry_link_tags ()
树枝捷径(或通过entrypoints.json处理资产在一些其他的方式)你完成了!这些快捷方法从entrypoints.json现在将包含子目录的文件。
jQuery没有定义或者$没有定义
此错误发生在您的代码(或您正在使用的某些库)期望$
或jQuery
为全局变量。但是,当你使用Webpack和要求(“jquery”)
,没有设置全局变量。
修复方法取决于错误是发生在您的代码中,还是发生在您正在使用的某些第三方代码中。看到jQuery插件和遗留应用程序为了解决问题。
未定义webpackJsonp
如果您得到这个错误,可能是因为您忘记添加脚本
标记。runtime.js
包含Webpack运行时的文件。如果你在用encore_entry_script_tags ()
函数,这种情况永远不会发生:文件脚本标记将自动呈现。
在./path/to/file.js中找不到这个依赖项
通常,在你通过yarn或npm安装了一个包之后,你可以要求/导入它来使用它。例如,跑步之后Yarn添加response .js
或NPM安装response .js
,您尝试要求该模块:
1
需要(“respond.js”);
但是,不是工作,你看到一个错误:
没有发现这种依赖关系:
- 在./assets/app.js中response .js
典型地,包将通过添加属性来“宣传”它的“主”文件主要
关键是package.json
.但是有时候,旧的库没有这个。相反,您需要特别要求所需的文件。在本例中,您应该使用的文件位于node_modules respond.js / / respond.src.js不在座位上
.你可以通过:
1 2
//需要一个非最小化的文件需要(“respond.js /桌子/ respond.src.js”);
我需要在第三方模块上执行Babel
为了性能,Encore不处理内部的库node_modules /
通过巴别塔。但是,你可以通过configureBabel ()
方法。看到配置巴别塔获取详细信息。
我如何集成我的安可配置与我的IDE?
PhpStorm中的Webpack集成和其他ide使您的开发更有效率(例如通过解析别名)。然而,你可能会遇到这样的错误:
1 2 3 4
还不能调用Encore.setOutputPath(),因为运行时环境似乎还没有配置好。确保你正在使用encore可执行文件,或者如果你故意不直接调用encore,首先调用encore . configureruntimeenvironment()。
它失败了,因为Encore运行时环境只在你运行它时配置(例如,当执行时)纱线返场开发
).修复此问题调用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. env. environment)NODE_ENV | |“开发”);}/ /……Encore配置的其余部分
我考试不及格是因为entrypoints.json
文件
安装Encore后,在本地或持续集成服务器上运行测试时,可能会看到以下错误:
1 2 3 4
未捕获的PHP异常Twig\错误\RuntimeError: "在模板渲染期间抛出了一个异常("无法从Webpack中找到入口点文件:该文件"/var/www/html/public/build/entrypoints. "Json”不存在。
发生这种情况是因为你没有建立你的安可资产,因此没有entrypoints.json
文件。要解决此错误,请构建Encore资产或设置strict_mode
选项假
(这可以防止Encore的Twig函数触发异常时没有entrypoints.json
文件):
1 2 3 4
#配置/包/测试/ webpack_encore.yamlwebpack_encore:strict_mode:假#……