当运行app / console assetic:dump时,我得到:
无法解析节点可执行文件的路径
这是什么意思以及如何解决这个问题?
当尝试通过app_dev.php浏览项目时,我在浏览器尝试下载css和js文件时收到HTTP 500错误。
答案 0 :(得分:18)
首先确保已安装节点并找到节点的路径。您通常可以使用which node
来查找此内容,这将返回/usr/local/bin/node
之类的内容。如果返回类似/usr/bin/which: no node in ...
的内容,则需要安装节点。
接下来配置symfony。打开config.yml(./app/config/config.yml)和节点到资产配置的路径,即:
# app/config/config.yml
assetic:
node: /usr/local/bin/node
答案 1 :(得分:5)
这对我有用
sudo apt-get remove nodejs
sudo apt-get remove npm
sudo curl -sL https://deb.nodesource.com/setup | sudo bash -
sudo apt-get install nodejs
答案 2 :(得分:4)
我在执行
时添加完全相同的错误php app/console assetic:dump --env=prod
在Ubuntu上,节点和nodejs二进制文件之间存在混淆。 要解决此问题,您需要安装节点二进制文件。 在我的情况下,二进制文件是nodejs,所以它没有工作。
在Ubuntu上,命令which node
将告诉您节点是否已经过时。
试试which node
,如果它不起作用,请尝试which nodejs
。
所以要确保我没有混淆:
sudo apt-get remove nodejs
curl -sL https://deb.nodesource.com/setup_4.x | sudo -E bash -
sudo apt-get install -y nodejs
在curl命令中检查node website中是否有正确的URL。您可能需要节点5.X。
现在你做的时候
which node
/usr/bin/node
您有正确的二进制名称(节点而不是nodejs)。
在此之后它应该工作。如果没有检查config.yml中的节点路径(检查config_prod和config_dev中没有其他声明)
答案 3 :(得分:2)
我发现,即使您在/usr/bin/node
中指定config.yml
,您仍可能会发现资产正在尝试使用/usr/local/bin/node
。
解决这个问题的快捷方法是:
ln -sf /usr/bin/node /usr/local/bin/node
如果您有疑问,请暂时修改vendor/kriswallsmith/assetic/src/Assetic/Filter/UglifyJs2Filter.php
编辑第136行附近:
if (127 === $code) {
throw new \RuntimeException('Path to node executable could not be resolved.');
}
- >
if (127 === $code) {
throw new \RuntimeException('Path to node executable could not be resolved.' . $this->nodeBin);
}
这将告诉您资产预期节点下次资产失败的位置。
我在设置中发现资产已配置为在/usr/local/bin
模式下dev
但在产品模式下/usr/bin
。
因此,值得检查config.yml
,config_dev.yml
和config_prod.yml
。
答案 4 :(得分:1)
您使用的是像uglify这样的过滤器吗?
如果是这种情况,Assetic会引发此错误,因为该进程存在代码127,这意味着节点可执行文件无法运行。
检查config.yml
中的路径:
# app/config/config.yml
assetic:
filters:
uglifyjs2:
bin: /path/to/uglifyjs
确保它是可执行的:
chmod +x /path/to/uglifyjs
答案 5 :(得分:0)
只需进行作曲家更新(php composer.phar更新),然后尝试转储您的资源。 它可能无法在第一次运行,因此请再次更新作曲家。