2016-10-28 166 views
49

我們最近嘗試升級到構建服務器上的節點v7.0.0,但在應用程序構建任務失敗時開始出現問題:"bower_concat" step升級到節點7後無法找到模塊'internal/fs'

Loading "bower-concat.js" tasks...ERROR 
Error: Cannot find module 'internal/fs' 

我們已經安裝了什麼:

  • node 7.0.0
  • npm 4.0.1
  • 0(通過 yum "nodesource" repository安裝)
  • 使用grunt(如果這是有關)
  • grunt-bower-concat 0.6.0

繁重的生成任務配置:

grunt.registerTask(
    'build:prod', [ 
     'clean:prod', 
     'copy:prod', 
     'replace', 
     'bower_concat', 
     'ngtemplates', 
     'concat', 
     'uglify', 
     'cssmin', 
     'injector:prod', 
     'copy:cssfix', 
     'copy:dist', 
     'bowercopy:dist', 
     'bowercopy:fonts', 
     'template:setProdVersion' 
    ] 
); 

而繁重的任務bower_concat

bower_concat: { 
    all: { 
     dest: '<%= app.build %>/bower.js', 
     cssDest: '<%= app.build %>/bower.css', 
     dependencies: { 
      'bootstrap': 'jquery' 
     }, 
     mainFiles: { 
      "angular-app-modules": [ 
       "app/dist/angular-app-modules.min.js", 
       "app/dist/angular-app-modules.min.css" 
      ] 
     } 
    } 
}, 

注它在v6.9.0的節點上沒有任何問題。

什麼可能導致問題?我們可以在不降級到節點v6的情況下解決問題嗎?


還有this relevant issue,但是,截至目前,該信息也沒有在我們的情況有所幫助。

+0

聽起來好像以前的版本沒有被正確地替換或者權限很棘手,但是這還不夠信息。我之前在運行我們的構建集羣時已經看到了這一點,但是它總是一個部分不好的安裝,我通常只是重新裝箱。 – ssube

+0

@ssube謝謝,是的,我傾向於認爲這是一個不好的安裝(不知道,如何可靠地驗證它)。當我在谷歌搜索這個,我看到人們重新安裝節點幫助時,類似的錯誤被拋出。我嘗試了很多次,但是,我想我需要從一個全新的盒子開始。另外,[有人報告](https:// github。com/npm/npm/issues/14438#issuecomment-256752070)安裝npm 4和節點7一起幫助解決了這個問題..但是我安裝了npm 4。好吧,我會看看如果有一個新鮮的盒子會有幫助。 – alecxe

+2

嘗試cd_ing進入'node_modules/bower-concat',然後從那裏運行'npm install'。然後嘗試從proj root再次運行您的構建任務。有什麼改進? – BigHeadCreations

回答

55

首先,打開控制檯作爲管理員(或與sudo如果它是一個Linux終端)和:

npm cache clean 

對於NPM 5和後來

npm cache clean --force 

編輯:

對於Windows,您可能無法c瘦緩存中,這樣你就可以通過刪除所有的以下文件夾的內容手動刪除緩存:

C:\Users\<USER-NAME>\AppData\Roaming\npm-cache 

謝謝「superwf」,這種情況下可能會發生一些,但我從來沒有這樣做(也許是因爲我的最低安全級別?!)。

End Edit。


然後返回到正常的控制檯(不管理員或根目錄),返回其中的package.json位於項目目錄,然後從你的項目中刪除的文件夾node_modules,徹底清除它,然後在您的項目文件夾中再次安裝節點模塊:

npm install 

您可能需要在再次安裝模塊之前更新模塊。我建議這樣做,但如果您的模塊中有任何主要版本更改,請注意中斷更改。 該模塊npm-check-updates可以幫助您檢查最新版本並更新它們。

另外,也許你需要安裝最新的全球模塊中,通過檢查更新:

ncu -g 

npm outdated -g 

如果你仍然堅持,你可能需要刪除全球node_modules文件夾並重新安裝你想要的東西。


編輯:有些人甚至與清理過程中同樣的問題結束了,其實你節省您的時間利用Yarn很多。我個人開始用紗線代替傳統的npm i,我可以保證它的速度更快,並且節省你的時間,並且從npm頭疼的頭上。

+0

在windows上,在安裝節點8.x後,npm install報告正在運行的版本3.x,並且我必須刪除文件夾C:\ Users \ \ AppData \ Roaming \ npm並重新安裝節點8.x以使其升級到NPM版本5.x –

+0

@SimonHutchison只是一個建議,現在,npm 5對我來說並不是很穩定,導致很多問題,我因節點sass而降級,很多人說這是npm的問題。 –

+0

謝謝你的擡頭。我同意,但我不考慮版本,npm處於不良狀態,根本沒有工作。superwf的評論建議刪除'C:\ Users [用戶名] \ AppData \ Roaming \ npm'和'npm-緩存文件夾,爲我工作。 –

14

在linux中,當我更新到節點7時,發生了這種情況,「npm cache clean」確實有效。

在Windows中,NPM緩存清理也產生

Error: Cannot find module 'internal/fs'

只是刪除

C:\Users[username]\AppData\Roaming\npm

C:\Users[username]\AppData\Roaming\npm-cache

解決

+1

刪除這兩個文件夾爲我工作 – syonip

17

在我的情況下清除緩存(OSX)沒有工作。我使用n來管理導致npm潛在過期的節點。據n docs您可以更新npm有:

curl -0 -L https://npmjs.org/install.sh | sudo sh 
+0

爲我節省了很多時間......謝謝:) – raffi

+0

運行後,我得到:沒有這樣的文件或目錄npm命令......這是好的,如果它只是一個路徑問題,但它會請注意。 (Upvoted) –

+0

雖然''sudo'沒有問題:'curl -L https://www.npmjs.com/install.sh | sh',尤其是如果你手動刪除文件夾'/ usr/local/lib/node_modules' – Aite

10

在我的情況下清除緩存沒有工作。下面是我的初始狀態,我該如何解決這個:

node -v v7.4.0 
 
npm -v 4.0.5

我做以下,並用正經理解析:

$ sudo n 6.9.1 
 
$ sudo npm -g install [email protected] 
 
$ sudo n stable

希望這幫助!

+0

爲什麼使用'sudo'安裝?這聽起來像你有權限在第一個地方搞砸了,我建議看看這個:https://docs.npmjs.com/getting-started/fixing-npm-permissions –

+0

這對我有效。謝謝! – Art

6

我使用n tool來管理節點(和捆綁的npm)版本之間的切換。 sudo rm -rf /usr/local/lib/node_modules/npm

然後我重新運行sudo的ñ最新:

要修正這個錯誤,我只是NPM從全局空間(Mac系統)中移除。這將重新安裝npm。當切換回以前版本的節點時,只需運行sudo n 4.3.2。

總結:

> sudo rm -rf /usr/local/lib/node_modules/npm 
> sudo n latest 
> node --version 
v7.7.1 
> npm --version 
4.1.2 
> sudo n 4.3.2 
> npm --version 
2.14.12 
2

您需要安裝涼亭

> npm install -g bower 

的最後一個版本顯然,NPM> 4.0不使用內部/ FS模塊。

+0

這個問題有什麼關係? –

+0

是的,你是對的。它不直接相關。問題在於grunt-bower-concat,它使用了一個老版本的bower。以下是對類似問題的相關評論:https://github.com/npm/npm/issues/14438#issuecomment-257113705 –

+0

是的,你是對的Anis。這是與涼亭版本有關的問題。感謝 –

2

在我的情況下清除緩存不起作用。做了什麼工作是刪除我的nodejs安裝位置中的node_modules/npm文件夾。然後再次運行nodejs安裝程序並使用「修復」選項(注意:這適用於Windows)。

從我可以在npm調試日誌中收集到的信息看來,在安裝新版本之前,我的舊版本的npm並未完全刪除。所以在安裝了npm的文件夾中有一些延遲棄用的模塊。

2

爲我工作的解決方案是

1) Delete node_modules/

sudo rm -R node_modules/ 

2) Re-run gulp

gulp

1

在Win10這個工作對我來說:(調整相關節點版本和用戶名)

  • 卸載節點(通過節點v7.8。 0-x64.msi)
  • 刪除'C:\ Users \ yourusername \ AppData \ Roaming中的文件夾'npm'和'npm-cache'
  • 再次安裝節點(通過節點v7.8.0-x64.msi )
1

將Node v4.X升級到v7.8.0後,進入此問題。重新安裝NPM和最新的檢查,讓我到一個可用的NPM v4.5.0。

curl -L https://www.npmjs.com/install.sh | sh 
npm install [email protected] -g 
2

我在Windows 8.1 x64上,從v6升級到v7。 我有我已經安裝了很多包在全球安裝 這個問題,但每次我跑NPM命令,npm install, npm list,npm update等是否總是返回相同的錯誤

這一步對我的作品:

  1. 清潔NPM緩存手動刪去位於

C:\Users[usrname]\AppData\Roaming\

NPM-緩存文件夾
  • 刪除/重命名我的NodeJS安裝目錄中的npm文件夾。在這種情況下,我NPM重命名的文件夾中,以npm--
  • C:\Program Files\nodejs\node_modules

  • 重新安裝的NodeJS V7
  • 一切正常然後

    +0

    確認工作正常 –

    2

    如果使用mac

    cd ~/.nvm/versions 
    

    和remov e節點文件夾

    1

    沒有答案爲我工作。

    在我重新安裝了節點和離子年底該訣竅:

    Cordova CLI: 7.0.1 
    Ionic CLI Version: 1.7.11   <-- way too old 
    Ionic App Lib Version: 0.6.5 
    ios-deploy version: 1.9.1 
    ios-sim version: 5.0.4 
    OS: Mac OS X El Capitan 
    Node Version: v8.0.0 
    Xcode version: Xcode 8.3.3 Build version 8E3004b 
    
    -1

    運行

    sudo rm -rf /usr/local/lib/node_modules/npm 
    

    再次NPM:固定發行前

    npm cache clean -f 
    npm install npm -g 
    
    npm uninstall node 
    npm install node -g 
    

    我的系統信息安裝。它將作品

    0

    1)須藤NPM緩存清理-f

    2)須藤NPM安裝-gn

    3)須藤ñ穩定

    只需三個步驟:)

    2

    我解決這通過安裝NVM來管理節點

    https://github.com/creationix/nvm#installation

    如果您正在使用n更新node版本和所有NPM命令與此消息意味着你有最新的節點,但較舊版本的NPM失敗後安裝NVM,重新安裝節點

    nvm install node 
    
    0

    所以在這種情況下,做到以下幾點,(可能需要須藤)

    n 4.7 npm install npm -g n latest

    它會回到節點4.7,然後用它安裝最新的NPM。之後它會回到最新的npm版本。 (用你真正想要的任何版本取代最新版本)

    相關問題