2016-10-28 212 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版本。 (用你真正想要的任何版本取代最新版本)

    相关问题