【问题标题】:Cannot find module 'internal/fs' after upgrading to node 7升级到节点 7 后找不到模块“内部/fs”
【发布时间】: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 再次运行您的构建任务。有什么改善吗?

标签: javascript node.js npm gruntjs bower


【解决方案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

    希望这会有所帮助!

    【讨论】:

    【解决方案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 等总是返回相同的错误

        这一步对我有用:

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

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

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

        C:\Program Files\nodejs\node_modules

        1. 重新安装 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。它会工作

                          【讨论】:

                            猜你喜欢
                            • 2017-01-08
                            • 1970-01-01
                            • 1970-01-01
                            • 2018-07-10
                            • 1970-01-01
                            • 1970-01-01
                            • 2022-12-15
                            相关资源
                            最近更新 更多