升级到节点7

时间:2016-10-28 15:42:56

标签: javascript node.js npm gruntjs bower

我们最近尝试在构建服务器上升级到节点v7.0.0,但在"bower_concat" step上的应用程序构建任务失败期间开始出现问题:

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

我们安装的内容:

  • node v7.0.0(通过yum "nodesource" repository安装)
  • npm 4.0.1
  • 使用grunt(如果这是相关的)
  • grunt-bower-concat 0.6.0

grunt构建任务配置:

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,但是,到目前为止,我们的案例中的信息没有帮助。

17 个答案:

答案 0 :(得分:57)

首先,以管理员身份打开控制台(如果是Linux,则打开带有sudo的终端)并且:

npm cache clean

对于npm 5及更高版本

npm cache clean --force

修改

对于Windows,您可能无法清除缓存,因此您可以通过删除以下所有文件夹内容来手动删除缓存:

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

谢谢&#34; superwf&#34;,这种情况可能会发生在某些人身上,但我从来没有这样做过(可能是因为我的安全级别最低?)。

结束编辑。

然后返回正常的控制台(不是管理员或root用户),返回到package.json所在的项目目录,然后从项目中删除node_modules文件夹,将其完全删除,然后在项目文件夹中再次安装节点模块:

npm install

您可能需要在再次安装模块之前更新模块。如果模块中有任何重大版本更改,我建议这样做,但小心修改。 此模块npm-check-updates可以帮助您检查最新版本并更新它们。

此外,您可能还需要安装最新的全局模块,通过以下方式检查更新:

ncu -g

npm outdated -g

如果您仍然卡住,则可能需要删除全局node_modules文件夹并重新安装所需内容。

修改

纱线选项:有些人即使使用清理程序也会遇到相同的问题,实际上您使用Yarn可以节省大量时间。 就我个人而言,我开始使用yarn而不是传统的npm i,我可以保证它更快,并节省您的时间,让您的头脑从头痛发作。

答案 1 :(得分:19)

在我的情况下清除缓存(OSX)不起作用。我使用n来管理导致npm可能过期的节点。根据{{​​3}},您可以使用以下内容更新npm

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

答案 2 :(得分:14)

在linux中,当我更新到节点7时,发生了这种情况,&#34; npm cache clean&#34;确实有效。

在windows中,npm cache clean也会生成

  

错误:无法找到模块&#39; internal / fs&#39;

只需删除

  

C:\用户[用户名] \应用程序数据\漫游\ NPM

     

C:\用户[用户名] \应用程序数据\漫游\ NPM-缓存

解决

答案 3 :(得分:11)

在我的情况下清除缓存不起作用。以下是我的初始状态以及我如何解决这个问题:

&#13;
&#13;
node -v v7.4.0
npm -v 4.0.5
&#13;
&#13;
&#13;

通过执行以下操作并使用n manager解决了这个问题:

&#13;
&#13;
$ sudo n 6.9.1
$ sudo npm -g install npm@next
$ sudo n stable
&#13;
&#13;
&#13;

希望这有帮助!

答案 4 :(得分:6)

我使用n tool来管理节点(和捆绑的npm)版本之间的切换。

要解决此错误,我只需从全局空间(macOS)中删除npm:sudo rm -rf /usr/local/lib/node_modules/npm

然后我重新跑了最新的sudo。这将重新安装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

答案 5 :(得分:3)

对我有用的解决方案是

  

1)删除node_modules /

sudo rm -R node_modules/ 
  

2)重新运行gulp

gulp

答案 6 :(得分:2)

您需要安装最新版本的凉亭

> npm install -g bower

显然,npm&gt; 4.0不要使用内部/ fs模块。

答案 7 :(得分:2)

在我的情况下清除缓存不起作用。在我的nodejs安装位置中删除node_modules/npm文件夹的工作是什么。然后再次运行nodejs安装程序并使用&#39; repair&#39;选项(注意:这适用于Windows)。

从我在npm调试日志中收集到的内容看起来,在安装新版本之前,我的旧版本的npm并未完全删除。因此,在安装了npm的文件夹中有一些挥之不去的弃用模块。

答案 8 :(得分:2)

我通过安装NVM来管理Node

来解决这个问题

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

安装NVM后,重新安装节点

nvm install node

答案 9 :(得分:2)

我使用的是Windows 8.1 x64,从v6升级到v7。 我在全球安装上遇到了这个问题 我已经安装了很多软件包,但是每次运行npm命令时,npm install, npm list,npm update等都会返回相同的错误

这一步对我有用:

  1. 删除位于
  2. 的npm-cache文件夹,以清理npm缓存手动
      

    C:\用户[usrname] \应用程序数据\漫游\

    1. 删除/重命名我的NodeJS安装目录中的npm 文件夹。在这种情况下,我将npm文件夹重命名为
    2. 中的npm -
        

      C:\ Program Files \ nodejs \ node_modules

      1. 重新安装NodeJS v7
      2. 一切正常

答案 10 :(得分:2)

如果使用mac

cd ~/.nvm/versions

并删除节点文件夹

答案 11 :(得分:1)

在Win10上,这对我有用:(适应相关节点版本和用户名)

  • 卸载节点(通过node-v7.8.0-x64.msi)
  • 删除'C:\ Users \ yourusername \ AppData \ Roaming
  • 中的文件夹'npm'和'npm-cache'
  • 再次安装节点(通过node-v7.8.0-x64.msi)

答案 12 :(得分:1)

没有一个答案适合我。

最后我重新安装了node和ionic,这就是诀窍:

npm cache clean -f
npm install npm -g

npm uninstall node
npm install node -g

解决问题之前的系统信息:

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

答案 13 :(得分:1)

在Node v4.X到v7.8.0升级后进入此问题。重新安装NPM和最新检查,让我进入了一个有效的NPM v4.5.0。

Player

答案 14 :(得分:0)

1)sudo npm cache clean -f

2)sudo npm install -g n

3)sudo n stable

只需三步:)

答案 15 :(得分:0)

如果您使用n来更新node版本,并且所有npm命令都失败,并显示此消息表示您拥有最新节点但较旧的npm版本。

所以在这种情况下,请执行以下操作(可能需要sudo)

n 4.7 npm install npm -g n latest

它将返回到节点4.7,然后使用它安装最新的npm。之后它会回到最新的npm版本。 (用您真正想要的任何版本替换最新版本)

答案 16 :(得分:-1)

运行

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

再次安装npm。它会起作用