结合视频:https://www.youtube.com/watch?v=L0wm7SWVBL0
①、创建前端文件(如下图)

步骤如图
②、安装magento支持,以magento2.4.3为例,使用命令行安装。
bin/magento setup:install \ --base-url=http://\ --db-host=localhost \ --db-name=magento242 \ --db-user=root \ --db-password=pwd\ --admin-firstname=admin \ --admin-lastname=admin \ --admin-email=admin@admin.com \ --admin-user=admin \ --admin-password=admin123 \ --language=en_US \ --currency=USD \ --timezone=America/Chicago \ --use-rewrites=1 \ --search-engine=elasticsearch7 \ --elasticsearch-host=127.0.0.1 \ --elasticsearch-port=9200\ --elasticsearch-username=magento2 \ --elasticsearch-password=pwd

③、安装magento-pwa plugin。
sudo composer require magento/pwa //开启相关model php bin/magento module:enable --clear-static-content Magento_ContactGraphQlPwa php bin/magento module:enable --clear-static-content Magento_NewsletterGraphQlPwa php bin/magento module:enable --clear-static-content Magento_QuoteGraphQlPwa

打开 app/etc/config.php 开启部分组件
一:搜索名为 aux = 1;
二:搜索名为 Pwa = 1;
④、下载venia 数据示例:
composer require --no-interaction --ansi magento/venia-sample-data:* //执行升级 将测试数据写入 bin/magento setup:upgrade

⑤、检查前端的配置文件 package.json 及 .env 文件
增加以下配置
--public http://pwastudio.rayman.com:3000 --open --port 3000 --hot --disableEostcheck=true

.env文件修改:
MAGENTO_BACKEND_URL = http://ceshi.com DEV_SERVER_HOST = 0.0.0.0 DEV_SERVER_PORT = 0 STAGING_SERVER_PORT = 8080
⑥、最后在前端项目根目录执行 yarn watch
-----------------------------------------------
常见问题:
Q:yarn watch 提示需要 v12.1.0 及 以上时:
As of version 12.1.0, PWA Studio requires the appropriate PWA metapackage to be installed on the backend.
A:克隆以下包、并执行以下命令
git clone https://github.com/magento/pwa-studio.git //切换至12.1.0 git checkout v12.1.0 yarn install
Q:v12.1.0的配置文件(.env等)在 ./packages/venia-concept 目录中,按照上图修改.env 及 部分配置文件。
执行yarn run watch:all 或 yarn run build 提示48行 网络连接报错。查看magento日志,显示:
//构建报错 /var/www/curtarra/testOne/pwa2/packages/pwa-buildpack/lib/Utilities/graphQL.js:48 //magento日志显示(开发模式):var/log/debug.log Cannot instantiate interface Magento\\InventorySalesApi\\Api\\GetProductSalableQtyInterface
原因:部分扩展没开启。
A:开启以下扩展尝试
array(1) {
["a"]=>
array(64) {
[0]=>
string(11) "Magento_Csp"
[1]=>
string(17) "Magento_Inventory"
[2]=>
string(24) "Magento_InventoryAdminUi"
[3]=>
string(33) "Magento_InventoryAdvancedCheckout"
[4]=>
string(20) "Magento_InventoryApi"
[5]=>
string(35) "Magento_InventoryBundleImportExport"
[6]=>
string(30) "Magento_InventoryBundleProduct"
[7]=>
string(37) "Magento_InventoryBundleProductAdminUi"
[8]=>
string(37) "Magento_InventoryBundleProductIndexer"
[9]=>
string(24) "Magento_InventoryCatalog"
[10]=>
string(22) "Magento_InventorySales"
[11]=>
string(31) "Magento_InventoryCatalogAdminUi"
[12]=>
string(27) "Magento_InventoryCatalogApi"
[13]=>
string(30) "Magento_InventoryCatalogSearch"
[14]=>
string(36) "Magento_InventoryConfigurableProduct"
[15]=>
string(43) "Magento_InventoryConfigurableProductIndexer"
[16]=>
string(30) "Magento_InventoryConfiguration"
[17]=>
string(33) "Magento_InventoryConfigurationApi"
[18]=>
string(45) "Magento_InventoryDistanceBasedSourceSelection"
[19]=>
string(52) "Magento_InventoryDistanceBasedSourceSelectionAdminUi"
[20]=>
string(48) "Magento_InventoryDistanceBasedSourceSelectionApi"
[21]=>
string(30) "Magento_InventoryElasticsearch"
[22]=>
string(31) "Magento_InventoryExportStockApi"
[23]=>
string(24) "Magento_InventoryIndexer"
[24]=>
string(31) "Magento_InventoryGroupedProduct"
[25]=>
string(38) "Magento_InventoryGroupedProductAdminUi"
[26]=>
string(38) "Magento_InventoryGroupedProductIndexer"
[27]=>
string(29) "Magento_InventoryImportExport"
[28]=>
string(33) "Magento_InventoryInStorePickupApi"
[29]=>
string(37) "Magento_InventoryInStorePickupAdminUi"
[30]=>
string(35) "Magento_InventorySourceSelectionApi"
[31]=>
string(30) "Magento_InventoryInStorePickup"
[32]=>
string(37) "Magento_InventoryInStorePickupGraphQl"
[33]=>
string(41) "Magento_InventoryInStorePickupShippingApi"
[34]=>
string(42) "Magento_InventoryInStorePickupQuoteGraphQl"
[35]=>
string(35) "Magento_InventoryInStorePickupSales"
[36]=>
string(38) "Magento_InventoryInStorePickupSalesApi"
[37]=>
string(35) "Magento_InventoryInStorePickupQuote"
[38]=>
string(38) "Magento_InventoryInStorePickupShipping"
[39]=>
string(45) "Magento_InventoryInStorePickupShippingAdminUi"
[40]=>
string(22) "Magento_InventoryCache"
[41]=>
string(40) "Magento_InventoryLowQuantityNotification"
[42]=>
string(43) "Magento_InventoryLowQuantityNotificationApi"
[43]=>
string(43) "Magento_InventoryMultiDimensionalIndexerApi"
[44]=>
string(29) "Magento_InventoryProductAlert"
[45]=>
string(32) "Magento_InventoryRequisitionList"
[46]=>
string(29) "Magento_InventoryReservations"
[47]=>
string(31) "Magento_InventoryReservationCli"
[48]=>
string(32) "Magento_InventoryReservationsApi"
[49]=>
string(28) "Magento_InventoryExportStock"
[50]=>
string(29) "Magento_InventorySalesAdminUi"
[51]=>
string(32) "Magento_InventorySalesFrontendUi"
[52]=>
string(38) "Magento_InventorySetupFixtureGenerator"
[53]=>
string(25) "Magento_InventoryShipping"
[54]=>
string(32) "Magento_InventoryShippingAdminUi"
[55]=>
string(35) "Magento_InventorySourceDeductionApi"
[56]=>
string(32) "Magento_InventorySourceSelection"
[57]=>
string(38) "Magento_InventoryInStorePickupFrontend"
[58]=>
string(43) "Magento_InventoryInStorePickupMultishipping"
[59]=>
string(43) "Magento_InventoryConfigurableProductAdminUi"
[60]=>
string(47) "Magento_InventoryLowQuantityNotificationAdminUi"
[61]=>
string(42) "Magento_InventoryInStorePickupSalesAdminUi"
[62]=>
string(24) "Magento_InventoryGraphQl"
[63]=>
string(15) "Magento_Version"
}
}Q:yarn run build 成功后,添加公网访问方式:

A:nginx反向代理
##pwa反向代理
server{
listen 8099;
server_name xxx; # 公网ip
index index.php index.html index.htm;
location / {
proxy_pass https://magento-venia-concept-ejcrt.local.pwadev:8383; # 或 http://www.baidu.com
proxy_set_header Host $proxy_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}原创文章,转载请标明出处!