我正在Firebase上观看这个Udemy课程。这门课程有点过时,最初制作于大约6年前。
在某个时刻,作者指示了如何使用firebase CLI,因此他指示了以下命令:
~/projects/chatlive]$ npm install -g firebase-tools
我添加了sudo
以避免权限问题:
~/projects/chatlive]$ sudo npm install -g firebase-tools
不幸的是,检索到此错误消息:
npm WARN checkPermissions Missing write access to /nix/store/nm7vm9d7xbvibazz7kl7xkqgjddqgiby-nodejs-14.18.3/lib/node_modules
npm ERR! code EROFS
npm ERR! syscall access
npm ERR! path /nix/store/nm7vm9d7xbvibazz7kl7xkqgjddqgiby-nodejs-14.18.3/lib/node_modules
npm ERR! errno -30
npm ERR! rofs EROFS: read-only file system, access '/nix/store/nm7vm9d7xbvibazz7kl7xkqgjddqgiby-nodejs-14.18.3/lib/node_modules'
npm ERR! rofs Often virtualized file systems, or other file systems
npm ERR! rofs that don't support symlinks, give this error.
npm ERR! A complete log of this run can be found in:
npm ERR! /root/.npm/_logs/2022-07-28T15_33_55_544Z-debug.log
我使用的是NixOS,这是我的配置文件。由于错误消息提到了nix/store
,我认为它可能是相关的。
通常,我会在NixOS中安装一些东西来更改configuration.nix
和执行sudo nixos-rebuild switch
。但考虑到npm正在管理安装,我认为这样做是没有必要的。
在Nix软件包上搜索,我可以看到firebase-tools
:链接。现在,调整配置文件似乎是一种方式。。。
在这种情况下,最佳做法是什么?
我应该强制尝试通过npm安装吗(如何?(?我应该仅仅因为这个软件包而选择新一代的NixOS和完整的系统重建吗?
还有其他可能的途径吗?我是不是错过了什么?
谢谢。
如果您只想在开发环境中使用firebase-tools
,请在工作目录中创建一个shell.nix
文件,并添加以下行:
{ pkgs ? import <nixpkgs> {}}:
pkgs.mkShell {
nativeBuildInputs = [ pkgs.nodePackages.firebase-tools ];
}
然后运行nix-shell
以启动包含firebase-tools
的shell。这被认为是本地开发环境的最佳实践,请参阅https://nixos.wiki/wiki/Development_environment_with_nix-shell。
如果你想试用不在nixpkgs repo中的软件包,你应该使用npm
并在本地安装一个软件包(没有-g
(。看见https://nixos.wiki/wiki/Node.js#Using_npm_install_-g_失败。