升级到节点 7 后找不到模块 'internal/fs'

Cannot find module 'internal/fs' after upgrading to node 7

我们最近尝试在构建服务器上升级到节点 v7.0.0,但在 "bower_concat" step:

上的应用程序构建任务失败期间开始出现问题
Loading "bower-concat.js" tasks...ERROR
Error: Cannot find module 'internal/fs'

我们安装了什么:

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'
    ]
);

而 grunt 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,但截至目前,那里的信息对我们的情况没有帮助。

首先,以管理员身份打开控制台(如果是 Linux,则在终端中使用 sudo)并:

npm cache clean

对于 npm 5 及更高版本

npm cache clean --force

编辑:

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

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

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

结束编辑。


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

npm install

您可能需要在再次安装模块之前更新您的模块。我推荐这样做,但是如果您的模块中有任何主要版本更改,请注意中断更改。 此模块npm-check-updates可以帮助您检查最新版本并更新它们。

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

ncu -g

npm outdated -g

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


编辑

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

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

在windows中,npm cache clean也会生成

Error: Cannot find module 'internal/fs'

只需删除

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

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

已解决

就我而言,清除缓存 (OSX) 无效。我使用 n 来管理导致 npm 可能已过时的节点。根据 n docs,您可以将 npm 更新为:

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

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

node -v v7.4.0
npm -v 4.0.5

我通过执行以下操作并使用 n 管理器解决了问题:

$ sudo n 6.9.1
$ sudo npm -g install npm@next
$ sudo n stable

希望对您有所帮助!

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

为了修复此错误,我只是从全局 space (macOS) 中删除了 npm:sudo rm -rf /usr/local/lib/node_modules/npm

然后我重新运行 sudo n latest。这将重新安装 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

您需要安装最新版本的 bower

> npm install -g bower

显然,npm > 4.0 不使用 internal/fs 模块。

在我的例子中,清除缓存不起作用。起作用的是删除我的 nodejs 安装位置中的 node_modules/npm 文件夹。然后再次 运行 nodejs 安装程序并使用 'repair' 选项(注意:这是针对 Windows)。

根据我在 npm 调试日志中收集到的信息,看起来我的旧版本 npm 在安装新版本之前没有完全删除。所以在安装 npm 的文件夹中有一些挥之不去的弃用模块。

对我有用的解决方案是

1) Delete node_modules/

sudo rm -R node_modules/ 

2) Re-run gulp

gulp

在 Win10 上这对我有用:(调整到相关的节点版本和用户名)

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

运行 在节点 v4.X 升级到 v7.8.0 后出现此问题。重新安装 NPM 并进行最新检查,使我可以使用 NPM v4.5.0。

curl -L https://www.npmjs.com/install.sh | sh
npm install npm@latest -g

我正在使用 Windows 8.1 x64,从 v6 升级到 v7。 我在全局安装时遇到了这个问题 我已经安装了很多包,但是每次我 运行 npm 命令,是否 npm install, npm list,npm update 等总是 return 相同的错误

这一步对我有用:

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

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

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

C:\Program Files\nodejs\node_modules

  1. 重新安装 NodeJS v7

然后一切正常

如果使用 mac

cd ~/.nvm/versions

并删除节点文件夹

None 个答案对我有用。

最后我重新安装了 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

运行

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

再次 npm 安装。它会起作用

1) sudo npm 缓存清理 -f

2) sudo npm install -g n

3) sudo n 稳定

只需三步:)

我通过安装 NVM 来管理节点来解决这个问题

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

安装 NVM 后,重新安装节点

nvm install node

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

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

n 4.7 npm install npm -g n latest

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