国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Laravel 5.4 Mix執行 npm run dev時報錯,提示cross-env not f

NusterCache / 1710人閱讀

本文來自pilishen.com----原文鏈接; 歡迎作客我們的php&Laravel學習群:109256050

《Npm Debug Series》是我們課程laravel實戰實戰系列課程的擴展閱讀篇,雖然視頻中我們已經將npm install過程中的常見問題及解決方案都說了,但是鑒于npm的問題相對頻繁,有隨時查閱之需,故有此系列文章。

最近很多小伙伴在使用最新的laravel5.4來學習我們的laravel實戰優雅入門:任務管理系統(一),在進行到第14節前端資源的管理與調用(elixir)時,當執行了npm run dev命令來編譯前端資源時,經常會遇到一個報錯,類似這樣:

> Code@1.0.0 dev /home/vagrant/Code
> cross-env NODE_ENV=development webpack --progress --hide-modules

sh: 1: cross-env: not found

npm ERR! Linux 4.4.0-51-generic
npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "run" "dev"
npm ERR! node v7.8.0
npm ERR! npm  v4.2.0
npm ERR! file sh
npm ERR! code ELIFECYCLE
npm ERR! errno ENOENT
npm ERR! syscall spawn
npm ERR! Code@1.0.0 dev: `cross-env NODE_ENV=development webpack --progress --hide-modules`
npm ERR! spawn ENOENT

或者說:

npm ERR! Failed at the @ dev script "cross-env NODE_ENV=development webpack --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js".

可能你具體的錯誤提示還稍有差異,不過這里先不管它,重點在于問題是出在cross-env這個組件上。

這個cross-env是個什么鬼?有什么用?
Most Windows command prompts will choke when you set environment variables with NODE_ENV=production like that. (The exception is Bash on Windows, which uses native Bash.) Similarly, there"s a difference in how windows and POSIX commands utilize environment variables. With POSIX, you use: $ENV_VAR and on windows you use %ENV_VAR%.

好吧,又是微軟Windows的鍋~也即是我們在windows系統上使用NODE_ENV=production這樣的方式來設置node環境時,因為windows的系統變量是%ENV_VAR%這種格式,而“行業標準”是$ENV_VAR這樣的,當然windows上的bash例外。

那么為了解決這個跨平臺環境變量的問題,就有了cross-env這個組件。知道這些個有啥用呢?

用處是,cross-env只是用在windows系統上的,在Mac和Linux系統上沒用,不需要裝,裝了反而會壞事兒~

所以從這一點上,你的問題其實有兩種可能:

你的項目環境是Windows系統,你沒有裝cross-env,或者說因為路徑等其他原因調用不到它。

你的項目環境是Linux或Mac,這個時候你沒必要裝cross-env,但是你卻裝了,或者說laravel默認帶了,而且裝就裝吧,路徑調用往往還有錯

這里特別的是,如果你是用的Homestead開發環境,因為你虛擬機里是Linux,所以如果你在Host主機上去操作,那你就是Windows環境,如果你vagrant ssh進了虛擬機操作,那么就是Linux環境;

所以解決辦法也要基于你的項目開發環境:

一、 Linux(Homestead)或Mac環境下:

你要做的,只是將你的package.json文件中的cross-env刪掉即可:

"dev": "node  NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
"watch": "node NODE_ENV=development node_modules/webpack/bin/webpack.js --watch --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
"watch-poll": "node NODE_ENV=development node_modules/webpack/bin/webpack.js --watch --watch-poll --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
"hot": "node NODE_ENV=development node_modules/webpack-dev-server/bin/webpack-dev-server.js --inline --hot --config=node_modules/laravel-mix/setup/webpack.config.js",
"production": "node NODE_ENV=production node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js"
二、 Windows系統下(WAMP、MAMP)

首先你需要裝一下cross-env,執行:

npm install --save-dev cross-env  --no-bin-links

或者你也可以全局安裝一下cross-env,以防止以后在其他項目也出現類似錯誤:

npm install -g cross-env  --no-bin-links

package.json文件中的cross-env調用換成具體路徑node_modules/cross-env/dist/bin/cross-env.js,最終類似這樣:

"dev": "node node_modules/cross-env/dist/bin/cross-env.js NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
"watch": "node node_modules/cross-env/dist/bin/cross-env.js NODE_ENV=development node_modules/webpack/bin/webpack.js --watch --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
"watch-poll": "node node_modules/cross-env/dist/bin/cross-env.js NODE_ENV=development node_modules/webpack/bin/webpack.js --watch --watch-poll --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
"hot": "node node_modules/cross-env/dist/bin/cross-env.js NODE_ENV=development node_modules/webpack-dev-server/bin/webpack-dev-server.js --inline --hot --config=node_modules/laravel-mix/setup/webpack.config.js",
"production": "node node_modules/cross-env/dist/bin/cross-env.js NODE_ENV=production node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js"

保險起見,再執行一下npm install --no-bin-links

然后再去執行npm run dev來試試

為什么會出來這么多梗?甚至很多人因此詬病laravel 5.4不友好——直接下載全新安裝都跑不起來

因為一直到laravel 5.4.15,laravel的package.json是這樣的:

{
  "private": true,
  "scripts": {
    "dev": "node node_modules/cross-env/bin/cross-env.js NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
    "watch": "node node_modules/cross-env/bin/cross-env.js NODE_ENV=development node_modules/webpack/bin/webpack.js --watch --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
    "watch-poll": "node node_modules/cross-env/bin/cross-env.js NODE_ENV=development node_modules/webpack/bin/webpack.js --watch --watch-poll --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
    "hot": "node node_modules/cross-env/bin/cross-env.js NODE_ENV=development node_modules/webpack-dev-server/bin/webpack-dev-server.js --inline --hot --config=node_modules/laravel-mix/setup/webpack.config.js",
    "production": "node node_modules/cross-env/bin/cross-env.js NODE_ENV=production node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js"
  },
  "devDependencies": {
    "axios": "^0.15.3",
    "bootstrap-sass": "^3.3.7",
    "jquery": "^3.1.1",
    "laravel-mix": "^0.8.1",
    "lodash": "^4.17.4",
    "vue": "^2.1.10"
  }
}

可以看到它的devDependencies里沒有依賴cross-env,但是在上方聲明了cross-env的路徑:node_modules/cross-env/bin/cross-env.js,因為laravel-mix這個組件里用到了cross-env。但是沒多久,cross-env的作者對組件路徑做了更改,將cross-env/bin換成了cross-env/dist,于是在這個laravel commit里,package.json文件里更改了cross-env的路徑,同時"devDependencies"里加上了"cross-env": "^3.2.3",然后沒幾天,作者們意識到既然依賴了cross-env,就沒必要上面寫具體路徑了,所以在這個laravel commit里,package.json文件變成這樣:

{
  "private": true,
  "scripts": {
    "dev": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
    "watch": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --watch --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
    "watch-poll": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --watch --watch-poll --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
    "hot": "cross-env NODE_ENV=development node_modules/webpack-dev-server/bin/webpack-dev-server.js --inline --hot --config=node_modules/laravel-mix/setup/webpack.config.js",
    "production": "cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js"
  },
  "devDependencies": {
    "axios": "^0.15.3",
    "bootstrap-sass": "^3.3.7",
    "cross-env": "^3.2.3",
    "jquery": "^3.1.1",
    "laravel-mix": "^0.8.1",
    "lodash": "^4.17.4",
    "vue": "^2.1.10"
  }
}

這期間呢,laravel-mix的作者Jeffway看到laravel里依賴了cross-env,所以他就在laravel-mix里直接取消了對cross-env的依賴,因為沒必要重復安裝,這直接導致了一系列問題的發生。而且這期間,laravel里對cross-env的依賴一直停留在"cross-env": "^3.2.3",直到5.4.30,才突然變成"cross-env": "^5.0.1".

所以呢,取決于你所使用的laravel和laravel-mix的版本,可能是你package.json里沒有cross-env而報錯,也可能是路徑變了以后沒更新,也可能是laravel調用的版本一直太低,因為這期間你可能執行了`composer update`或`npm update`這些命令而導致兩者的小版本都發生變化,所以說不清道不明的問題就發生了。
最后,向依然在Windows上裸奔的laravel開發者致以凝重的深望~

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/28245.html

相關文章

  • Laravel-Vue-SSR-SPA 服務端渲染/單頁面渲染實現骨架

    摘要:提供服務端渲染單頁面渲染實現骨架同時集成打包構建文件名實現內置等套件提供端渲染方案前后端分離單頁面方案前后端分離單頁面方案等三種常見方案項目地址歡迎項目需求基于和提供的強大的功能組合并根據已有項目實踐經驗提供完整的集成方案幫助快速 Laravel-Vue-SSR-SPA 提供服務端渲染/單頁面渲染實現骨架, 同時集成webpack打包構建 MD5文件名/gzip 實現, 內置 vue-...

    zr_hebo 評論0 收藏0
  • Laravel-Vue-SSR-SPA 服務端渲染/單頁面渲染實現骨架

    摘要:提供服務端渲染單頁面渲染實現骨架同時集成打包構建文件名實現內置等套件提供端渲染方案前后端分離單頁面方案前后端分離單頁面方案等三種常見方案項目地址歡迎項目需求基于和提供的強大的功能組合并根據已有項目實踐經驗提供完整的集成方案幫助快速 Laravel-Vue-SSR-SPA 提供服務端渲染/單頁面渲染實現骨架, 同時集成webpack打包構建 MD5文件名/gzip 實現, 內置 vue-...

    U2FsdGVkX1x 評論0 收藏0
  • Laravel Mix運行時關于es2015報解決方案

    摘要:概述系統環境最近在使用時,執行命令時報了解決方案在百度上搜了一圈,沒有找到合適的答案。意外在上項目中的找到了對應的解答,方案如下在根目錄增加文件,文件內容執行命令參考地址 概述 系統環境 2015 MacBook Pro 13.3 PHP 7.2.2 Laravel 5.7.9 Node v8.0.0 Npm 6.0.0 最近在使用Laravel Mix時,執行命令npm run...

    MRZYD 評論0 收藏0
  • Laravel 和 Vue 的項目搭建:基礎篇

    摘要:此項目前端使用框架,加上這些常用擴展后的其中還加入了加載器解析工具前端動畫等,不需要的可以自行刪除。沒有的,需要設置淘寶鏡像,下載的是國外的鏡像,速度慢而且可能出現下載失敗的問題。 本篇只是實現了 基礎 的功能,對于實際的項目中的權限等還未涉及,這些會在后期逐步完善。相關項目 laravel-vue-iview 的 GitHub 地址 戳這里,此項目基本可用于實際開發工作。 Lara...

    jiekechoo 評論0 收藏0
  • [譯] Laravel-mix 中文文檔

    摘要:原文地址鏡像地址中文文檔概覽基本示例是位于頂層的一個簡潔的配置層,在的情況下使用會使操作變的非常簡單。在項目根目錄下并沒有配置文件,默認指向根目錄下的配置文件。否則,它通常與需要刪除的錯誤鎖文件有關。該問題已被在修復。 原文地址: Laravel Mix Docs 鏡像地址 : Laravel-mix 3.0 中文文檔 概覽 基本示例 larave-mix 是位于webpack頂層的一...

    K_B_Z 評論0 收藏0

發表評論

0條評論

NusterCache

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<