javascript - 升级到 Node 7 后找不到模块 'internal/fs'

标签 javascript node.js npm gruntjs bower

我们最近尝试在我们的构建服务器上升级到 Node 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'
    ]
);

还有 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"
            ]
        }
    }
}, 

请注意,它在 Node v6.9.0 上可以正常工作。

什么可能导致问题?我们可以在不降级到 Node 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),回到你的package.json所在的项目目录,然后从你的项目中删除node_modules文件夹,彻底删除,然后在您的项目文件夹中再次安装 Node 模块:

npm install

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

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

ncu -g

npm outdated -g

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


编辑:

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

关于javascript - 升级到 Node 7 后找不到模块 'internal/fs',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40308623/

相关文章:

javascript - 如何在nodejs中发送响应错误代码

javascript - 将文档对象参数传递给javascript中函数的正确方法

Angular 2 提前编译器 : must I make all class properties public?

node.js - NPM 在错误的地方安装依赖项

javascript - 修改:after pseudo CSS element from JQuery的宽度

javascript - 如何从.cs文件调用.aspx的方法

javascript - 实例创建(JS)

javascript - 从 Meteor.js 打开一个 Websocket 连接

javascript - 为什么要在 mouseenter/mouseleave 中进行浸入操作?

javascript - Webpack html-loader,包含用于延迟加载的 data-src 图像