node_modules

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,改成其他名字就不能执行,除非修改package.json文件的main

当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
fs等其他的模块用到路径的时候,都是相对于cmd命令光标所在位置。
所以, 在b.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

你可能感兴趣的:(Node.js)