当前位置: 首页 > 知识库问答 >
问题:

解决“npm WARN saveError”表示:没有这样的文件或目录,打开“/users//package.json”错误

熊博远
2023-03-14

我是一个新手,所以请包括链接到网址或解释术语,以便我能理解。

我已经设法通过终端在Mac OS(10.13.3)上安装了'npm',并使用它安装了一些软件包,比如SASS。

我现在正在尝试使用NPM安装sass-mq。我想我已经设法安装了它,但我想要一个第二意见,我可能做了什么不完整,或错误的时候做。

npm install sass-mq --save
npm WARN saveError ENOENT: no such file or directory, open '/Users/<username>/package.json'
    npm WARN enoent ENOENT: no such file or directory, open '/Users/<username>/package.json'
    npm WARN <username> No description
    npm WARN <username> No repository field.
    npm WARN <username> No README data
    npm WARN <username> No license field.

    + sass-mq@5.0.0
    updated 1 package and audited 1 package in 1.67s
    found 0 vulnerabilities

环顾四周,我意识到我应该用

npm init

..然后键入“install sass-mq--save”命令。

酷,做了。下一个错误是:

package name: (nikhil) sass-mq
version: (1.0.0) 
description: 
entry point: (index.js) 
test command: 
git repository: 
keywords: 
author: 
license: (ISC) 
About to write to /Users/nikhil/package.json:

{
  "name": "sass-mq",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "dependencies": {
    "sass-mq": "^5.0.0"
  },
  "devDependencies": {},
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC"
}


Is this OK? (yes) 
darwin:~ nikhil$ npm install sass-mq --save
npm ERR! code ENOSELF
npm ERR! Refusing to install package with name "sass-mq" under a package
**npm ERR! also called "sass-mq". Did you name your project the same
npm ERR! as the dependency you're installing?**
**package name: (sass-mq) media-queries-nikhil**
version: (1.0.0) 
description: 
git repository: 
keywords: 
author: 
license: (ISC) 
About to write to /Users/nikhil/package.json:
npm WARN media-queries-nikhil@1.0.0 No description
npm WARN media-queries-nikhil@1.0.0 No repository field.

感谢阅读,我真的非常感谢您对此的帮助:)

共有1个答案

司徒鸿文
2023-03-14

你做的很好,你不必担心那些警告。

要想更深入地了解国家预防机制存在的原因及其工作方式,请继续阅读。

npm代表节点包管理器。包是节点生态系统的一个基本部分--它们的存在是为了允许您使用其他人的解决方案来解决常见问题。

然而,这可能会变得非常混乱,因为,因为这是一个开源社区,它们都是由不同的人在不同的时间发布的。此外,您使用的两个不同的包实际上可能依赖于您完全不知道的第三个包,而且它们可能甚至需要该包的不同版本。

正如您已经看到的,这有可能变得非常混乱。

npm帮助您以一种更容易管理和思考的方式处理这些“依赖关系”,然而使用npm并不是必需的--您可以编写一个节点应用程序,在那里您自己组织所有这些不同的文件。但是,这会很快变得非常混乱,所以至少在99%的情况下没有真正的优势。还有其他包管理器--我个人使用yarn,但他们都在尝试做类似的事情,所以选择主要是一个偏好问题,不在本文讨论的范围之内。

因此,让我们创建自己的包,并安装我们的第一个依赖项(记住,它只是另一个包)。我将选择时间戳作为一个依赖项,因为它很好而且很小。

首先,您将创建项目目录。这只是一个空的新目录。我们称之为ts。在ts目录中,在终端中键入npm init并回答其问题(尽管我通常只需按return to They all),然后查看目录中的内容,您将看到package.json文件。打开该文件,您将看到您的所有包信息。现在就这样了。

现在回到命令行,输入npm install time-stamp。当它完成思考后,再次打开package.json,您将看到“dependencies”列表中引用的时间戳。(从npm 5开始,不再需要使用--save选项。npm现在假定这是默认值。npm安装的--save选项是什么?)

回到目录内部,您还将看到另一个名为package-lock.json的文件和一个名为node_modules的目录。

node_modules目录将包含一个名为time-stamp的目录,该目录包含使time-stamp工作的所有代码。您可能不需要经常在这里查看,但您可以,如果您查看时间戳目录,您会看到它有自己的package.json!打开它看一看,里面有它自己安装所需的所有信息。您将注意到它没有任何依赖项,但如果有,它们将安装在您的node_modules中,并包含它们的所有依赖项...以及它们的依赖关系...他们的...如果您想看到这一点,请尝试安装测试框架'jest。同样,只需npm安装jest

希望整件事开始有意义了,现在...

最后,值得一提的是全局安装。使用-g选项-即npm install time-stamp-g-意味着依赖项将安装在计算机上某个位置的中央node_modules目录中,而不是安装在项目的node_modules文件夹中。但是,您仍然需要将它链接到您的项目(以便它最终成为package.json中的一个依赖项),您可以通过键入npm link time-stamp来实现。就我个人而言,我喜欢我的所有模块都是我的项目的本地模块,但这同样取决于您的用例,在一定程度上取决于个人偏好。

这意味着package.json和锁文件的组合是node_modules中所有文件的完美表示,这意味着您不需要在git(或其他存储库)中拥有它们您可以将存储库下拉到一个新的服务器上,您所要做的就是键入npm install,然后它们就会从internet上拖下来。当您有一个大型项目时,这一点变得更加重要,因为依赖项中涉及到所有文件,但是从第一天起就将'node_modules'添加到.gitignore中是一个好习惯。但我开始偏离话题了所以也许我该在这里结束...

这只是一个基本的介绍,所以我把它保持得相当简单,我不想创建一个深入的教程,但如果您需要澄清我所做的任何一点,请随意评论,我会做编辑,如果我可以的话!

 类似资料:
  • 我在节点Js中工作。当我尝试加载文件时:moviedata.json,如下行: 显示: 错误:ENOENT:没有这样的文件或目录,打开'./moviedata.json'在错误(本机)在Object.fs.open同步(fs.js:640: 18)在Object.fs.readFileSync(fs.js:508: 33)在对象。(/用户/dortiz/文档/NodeJS/pruebas/zw/a

  • 方法总是给出这样的错误: 打开失败:ENOENT(没有这样的文件或目录)

  • 错误:警告:require_once(…/tcpdf/config/lang):无法打开流:在第33行的C:\xampp\htdocs\jmb_system\anggerik\printunitstmt.php中没有这样的文件或目录 致命错误:require_once():失败打开需要'…/tcpdf/config/lang'(include_path='.; C:\xampp\php\PEAR'

  • 免责声明:在堆栈溢出中也有类似的问题,但这些问题是他们各自的答案,既不适合这个问题,也不帮助解决他们的答案。这些问题是不同的,答案只适合那些具体的问题,而不是通用的。经过长时间的挣扎,他们没有任何帮助,我想了两次我要发布这个问题来寻求帮助。如果有人不喜欢这个问题或不理解,请沟通并得到澄清,而不是勉强设置标志来关闭这个问题;最好你可以忽略并传递...谢谢你! 需求:我使用Zend框架的谷歌日历API

  • 问题内容: 我有一个Nodejs Web应用程序,当前正在服务器上成功运行。现在,我正在尝试在开发服务器上设置本地副本。 我目前已经像生产服务器中一样安装了Nodejs,NPM和Mongo,但是当我尝试启动节点服务器时出现以下错误 是什么导致此问题? 问题答案: 您的应用希望在处找到一个文件,但该文件不存在(这意味着)。因此,您要么需要创建预期的目录结构,要么配置您的应用程序,使其在的正确目录中查

  • 问题内容: 我只想将socket.io安装到位于3.chat文件夹中的项目中。但是当我运行以下命令时,它显示以下警告。并且它没有在我的项目文件夹中创建一个node_modules目录。如何解决这个问题? 问题答案: 您是否创建了 package.json 文件?也许先运行此命令。 它在您的文件夹中创建一个 package.json 文件。 然后跑 在确保您的模块保存为您的依赖关系 的package