问题
例如:npm 安装 koa,虽然安装成功,但出现一些WARN:
E:\xushanxiang\nodeproj\koaproj>npm i koa
npm WARN saveError ENOENT: no such file or directory, open 'E:\xushanxiang\nodeproj\koaproj\package.json'
npm notice created a lockfile as package-lock.json. You should commit this file.
npm WARN enoent ENOENT: no such file or directory, open 'E:\xushanxiang\nodeproj\koaproj\package.json'
npm WARN koaproj No description
npm WARN koaproj No repository field.
npm WARN koaproj No README data
npm WARN koaproj No license field.
+ koa@2.13.4
added 42 packages from 25 contributors in 6.135s
4 packages are looking for funding
run `npm fund` for details
原因
根据错误提示,是系统没有 package.json 这个文件导致。这个文件的作用就是管理你本地安装的 npm 包,一个 package.json 文件可以做如下事情:
package.json 是 node 项目用来记录作者,项目入口,项目描述,项目依赖,启动脚本,项目版本号,项目ip代理,开源许可等其他的项目相关信息,通过 package.json 可以进行npm包的发布与项目依赖的安装。
npm install 命令根据这个配置文件,自动下载所需的模块,也就是配置项目所需的运行和开发环境。
与之还会存在 package-lock.json 文件,会具体项目所需依赖的版本等其他信息。
解决
所以,我们 创建一个 node.js 项目 ,可以先输入 npm init,按照提示填写包信息,选择默认或不填写直接回车,效果等同 npm init -y。执行完命令后可以看到用户路径下多了一个 package.json 文件。如下:
{
"name": "koaproj",
"version": "1.0.0",
"description": "",
"main": "index.js",
"dependencies": {
"koa": "^2.13.4"
},
"devDependencies": {},
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC"
}
数据含义:
name:项目名称(必须)
version:项目版本(必须)
description:项目描述
author:作者
private:是否私有
config:用于向环境变量输出值。
scripts:指定了运行脚本命令的npm命令行缩写,比如start指定了运行npm run start时,所要执行的命令。
dependencies:项目运行所依赖的模块,运行模式-S
devDependencies:项目开发所需要的模块,开发模式-D
engines:指明了该项目所需要的node.js版本
browserslist:说明这个项目的浏览器兼容情况。也能根据提供的目标浏览器的环境来,智能添加css前缀,js的polyfill垫片,来兼容旧版本浏览器,而不是一股脑的添加。避免不必要的兼容代码,以提高代码的编译质量。
package.json文件可以使用npm init命令自动生成,也可以手工编写,要注意的是在 package.json 中不能有注释,否则会报错。