1.使用npm install命令是,以管理员身份打开cmd窗口,否则可能会出错。
2.在哪个路径下执行npm install命令,node_modules文件就建立在该路径下。
3.node_modules文件夹不一定放在项目的文件夹里面,只要存放在项目的文件夹的任何一个母目录都行。
比如项目在F:\mynode文件夹下,下面的路径都行:
F:\mynode\node_modules
F:\node_modules
4.存放在node_modules文件夹下的js文件在被require的时候,可以不指明文件路径:
比如,在node_modules文件夹下建立一个aa.js文件,
var aa = require("aa.js");等价于var aa = require("./node_modules/aa.js");
特别的,如果在node_modules文件夹中,创建一个bb文件夹,里面放入index.js文件,现在想引用:
var bb = require("bb");等价于var bb = require(./node_modules/bb/index.js);
例如:
a.js 的目录是F:\mynode,index.js的目录是F:\mynode\b
index.js
var num = 100;
exports.num = num;
a.js
var b = require('./b');
console.log(b.num);
node a.js的结果输出是100
当index.js修改成app.js时,运行会报错,此时在b文件夹下,写一个package.json文件,这个文件的名字不能改。node将自动读取里面的配置。有一个main项,就是入口文件:
{
"name": "node",
"version": "1.0.1",
"main": "app.js"
}
注意:必须全都是是双引号,单引号会报错。
5.require()别的js文件的时候,将执行那个js文件。
require()中的路径,是从当前这个js文件出发,找到别人。而fs是从命令提示符找到别人。
F:\mynode文件夹下有a.js 和1.txt(内容是hello)
F:\mynode\test文件夹下有b.js 和1.txt(内容是我是1.txt)
a.js
var b = require('./test/b');
b.js
var fs = require('fs');
fs.readFile('./1.txt',function(err,data){
console.log(data.toString());
})
F:\mynode>node a.js的运行结果:Hello
如果想读取F:\mynode\test文件夹下的1.txt(内容是我是1.txt),则
b.js
var fs = require('fs');
fs.readFile(__dirname +'/1.txt',function(err,data){
console.log(data.toString());
})
F:\mynode>node a.js的运行结果:我是1.txt
6.npm使用package.json依赖
install init命令会创建package.json文件
比如,当时用npm install cheerio -save命令时,会下载该模块,同时 package.json文件中会存入该模块的信息
发给别人文件时,不需要发node_modules文件,只要有package.json文件就可以
因为npm install命令会根据package.json文件中存入的依赖的信息,进行下载依赖模块
当使用npm install命令存入依赖时,会出现npm ERR! Unexpected token '\u0000'的错误,不能正常解析json文件
使用 npm cache clean,问题得到了解决。
在网上看到了解决npm install命令出错的方法 :
npm cache clean
rm -rf ~/.npm (suggestion from other report)
rm -rf node_modules (to remove the local modules)
7.安装淘宝镜像:
npm install -g cnpm --registry=https://registry.npm.taobao.org
使用cnpm代替npm会更快,
npm install cheerio -save变为cnpm install cheerio --save