當運行應用程序/控制檯assetic:轉儲,我得到:Symfony2的Assetic:路徑節點可執行無法解析
路徑節點可執行文件無法解析
這是什麼意思和如何解決這個問題?
當試圖通過app_dev.php瀏覽項目時,瀏覽器嘗試下載css和js文件時出現HTTP 500錯誤。
當運行應用程序/控制檯assetic:轉儲,我得到:Symfony2的Assetic:路徑節點可執行無法解析
路徑節點可執行文件無法解析
這是什麼意思和如何解決這個問題?
當試圖通過app_dev.php瀏覽項目時,瀏覽器嘗試下載css和js文件時出現HTTP 500錯誤。
首先確保您已安裝節點並找到節點的路徑。你通常可以通過使用which node
找到這個,它會返回類似/usr/local/bin/node
的東西。如果它返回類似/usr/bin/which: no node in ...
的東西,則需要安裝節點。
接下來配置symfony。打開你的config.yml(./app/config/config.yml)和節點到你assetic配置的路徑,即:
# app/config/config.yml
assetic:
node: /usr/local/bin/node
爲了闡述我將節點更改爲/ usr/bin/nodejs並且它對我有用。 –
您是否使用了像uglify這樣的過濾器?
如果是這種情況,Assetic會引發此錯誤,因爲該進程存在代碼127,這意味着節點可執行文件無法運行。
檢查您config.yml
路徑:
# app/config/config.yml
assetic:
filters:
uglifyjs2:
bin: /path/to/uglifyjs
,並確保它是可執行的:
chmod +x /path/to/uglifyjs
你的答案適用於我,但它需要一些額外的更正。我們必須通過鍵入「which uglifycss」「uglifyjs」並將其寫入config_dev.yml和config.yml文件來學習uglifyjs和uglifycss文件的路徑 –
只是做一個作曲家更新(PHP composer.phar更新),那麼試着傾銷您的資產。 它可能不是第一次工作,所以再次更新作曲家。
這爲我工作
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
我想補充的確切同時出錯
php app/console assetic:dump --env=prod
在Ubuntu上,節點和nodejs二進制之間存在混淆。 要解決此問題,您需要安裝節點二進制文件。 在我的情況下,二進制文件是nodejs,所以它不起作用。
在Ubuntu上,節點會告訴你節點是否已被安裝的命令。 嘗試使用哪個節點,如果不起作用,請嘗試使用哪個nodejs。
所以要確保沒有混亂我所做的:
sudo apt-get remove nodejs
curl -sL https://deb.nodesource.com/setup_4.x | sudo -E bash -
sudo apt-get install -y nodejs
檢查node website在curl命令正確的URL。您可能需要節點5.X.
現在,當你做
which node
/usr/bin/node
你有正確的二進制文件名(節點代替的NodeJS)。
之後它應該工作。如果沒有檢查config.yml節點路徑(檢查是否有在config_prod和config_dev沒有其他聲明)
我發現,即使你設置的config.yml
你還是會發現assetic /usr/bin/node
試圖使用/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);
}
這會告訴你資產期望下一次資產失敗的節點。
我在成立assetic發現配置爲看/usr/local/bin
在PROD模式dev
模式,但/usr/bin
。 所以值得檢查config.yml
,config_dev.yml
和config_prod.yml
。
快而骯髒,但它讓我再次去。謝謝! – Peter
您是否使用任何需要node.js像uglify的資產過濾器? – Ramesh