升级到节点 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安装)
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,但到目前为止,那里的信息对我们的案例没有帮助。
【问题讨论】:
听起来以前的版本没有被正确替换或权限很乱,但这还不足以说明信息。我以前(在运行我们的构建集群时)与其他模块一起看到过这种情况,但它总是部分错误的安装,我通常只是重新旋转盒子。 @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\C:\Users[username]\AppData\Roaming\npm
和 npm-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'
构建错误:升级到 Xcode 10 后找不到 FBSDKShareKit.h 文件
将 Microsoft.AspNet.Identity 升级到 rc1 后找不到 IdentityStoreManager
升级到 Visual Studio 2017 后找不到 Microsoft.VisualStudio.TestTools.LoadTesting