升级到节点 7 后找不到模块“内部/fs”

Posted

技术标签:

【中文标题】升级到节点 7 后找不到模块“内部/fs”【英文标题】:Cannot find module 'internal/fs' after upgrading to node 7 【发布时间】:2017-03-11 13:19:45 【问题描述】:

我们最近尝试在构建服务器上升级到节点 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安装) npm4.0.1 使用grunt(如果相关) grunt-bower-concat0.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,但到目前为止,那里的信息对我们的案例没有帮助。

【问题讨论】:

听起来以前的版本没有被正确替换或权限很乱,但这还不足以说明信息。我以前(在运行我们的构建集群时)与其他模块一起看到过这种情况,但它总是部分错误的安装,我通常只是重新旋转盒子。 @ssube 谢谢,是的,我倾向于认为这也是一个糟糕的安装(不知道如何可靠地验证它)。当我在谷歌搜索这个时,我看到人们在抛出类似错误时重新安装节点有所帮助。我已经尝试了很多次,但是,我想,我需要从一个全新的盒子开始。此外,some people reported 将 npm 4 与节点 7 一起安装有助于解决问题..但我安装了 npm 4。好的,我看看有没有新的盒子会有帮助。 尝试 cd'ing 到 node_modules/bower-concat,然后从那里运行 npm install。然后尝试从 proj root 再次运行您的构建任务。有什么改善吗? 【参考方案1】:

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

npm cache clean

适用于 npm 5 及更高版本

npm cache clean --force

编辑:

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

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

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

结束编辑。


然后回到普通控制台(不是管理员也不是root),回到你的package.json所在的项目目录,然后从你的项目中删除node_modules文件夹,彻底删除,然后安装node再次在您的项目文件夹中的模块:

npm install

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

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

ncu -g

npm outdated -g

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


编辑

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

【讨论】:

在 Windows 上,安装节点 8.x 后,npm install 报告正在运行 3.x 版,我不得不删除文件夹 C:\Users\\AppData\Roaming\npm 和重新安装节点 8.x 以使其升级到 NPM 版本 5.x @SimonHutchison 只是为了推荐,目前,npm 5 对我来说还不是很稳定,导致很多问题,我因为 node-sass 而降级,因为很多人说这是一个问题npm。 感谢您的提醒。我同意,但是无论版本如何,npm 都处于不良状态并且根本无法正常工作。下面 superwf 的评论建议删除 C:\Users[username]\AppData\Roaming\npmnpm-cache 文件夹,对我有用。 这对我来说不太奏效 - 除了用户配置文件中的文件夹外,我还必须删除 C:\Program Files (x86)\nodejs\node_modules,然后从 MSI 修复安装。 列出的位置不正确。我在C:\Users\%username%\AppData\Local\npm-cache 下找到了我的【参考方案2】:

在我的情况下,清除缓存 (OSX) 不起作用。我使用n 来管理导致npm 可能已过时的节点。根据n docs,您可以更新npm

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

【讨论】:

运行此命令后,我得到: No such file or directory for npm command... 如果只是路径问题,这很好,但请注意。 (赞成) 它可以在没有sudo 的情况下工作:curl -L https://www.npmjs.com/install.sh | sh,尤其是如果您手动删除了文件夹 /usr/local/lib/node_modules【参考方案3】:

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

在windows中,npm cache clean也会生成

错误:找不到模块“内部/fs”

删除

C:\Users[用户名]\AppData\Roaming\npm

C:\Users[用户名]\AppData\Roaming\npm-cache

解决了

【讨论】:

【参考方案4】:

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

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

希望这会有所帮助!

【讨论】:

为什么要使用sudo 安装?听起来您的权限一开始就搞砸了,我建议您调查一下:docs.npmjs.com/getting-started/fixing-npm-permissions【参考方案5】:

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

为了修复这个错误,我只是从全局空间 (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

【讨论】:

【参考方案6】:

对我有用的解决方案是

1) 删除 node_modules/

sudo rm -R node_modules/ 

2) 重新运行 gulp

gulp

【讨论】:

【参考方案7】:

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

这一步对我有用:

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

C:\Users[用户名]\AppData\Roaming\

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

C:\Program Files\nodejs\node_modules

    重新安装 NodeJS v7

然后一切正常

【讨论】:

【参考方案8】:

您需要安装最新版本的 bower

> npm install -g bower

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

【讨论】:

bower 与这个问题有什么关系? 是的,你是对的。它没有直接关系。问题在于 grunt-bower-concat,它使用的是旧版本的 bower。这是对类似问题的相关评论:github.com/npm/npm/issues/14438#issuecomment-257113705 是的,你是对的 Anis。这是与凉亭版本有关的问题。谢谢【参考方案9】:

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

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

【讨论】:

【参考方案10】:

如果使用 mac

cd ~/.nvm/versions

并删除节点文件夹

【讨论】:

【参考方案11】:

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

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

安装NVM后,重新安装节点

nvm install node

【讨论】:

【参考方案12】:

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

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

【讨论】:

【参考方案13】:

在 Node v4.X 升级到 v7.8.0 后遇到了这个问题。重新安装 NPM 并进行最新检查,我得到了一个正常工作的 NPM v4.5.0。

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

【讨论】:

【参考方案14】:

没有一个答案对我有用。

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

【讨论】:

【参考方案15】:

1) sudo npm cache clean -f

2) sudo npm install -g n

3) sudo n 稳定

只需三个步骤:)

【讨论】:

【参考方案16】:

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

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

n 4.7 npm install npm -g n latest

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

【讨论】:

【参考方案17】:

运行

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

再次安装 npm。它会工作

【讨论】:

以上是关于升级到节点 7 后找不到模块“内部/fs”的主要内容,如果未能解决你的问题,请参考以下文章

升级到 '@nativescript/core' 后找不到 Xxport 'topmost'

升级到 Angular4 后找不到名称“require”

构建错误:升级到 Xcode 10 后找不到 FBSDKShareKit.h 文件

将 Microsoft.AspNet.Identity 升级到 rc1 后找不到 IdentityStoreManager

升级到 Visual Studio 2017 后找不到 Microsoft.VisualStudio.TestTools.LoadTesting

安卓13系统升级后找不到插件