目测是文件夹权限问题,要用管理员权限运行
不知道你这个问题是否已经解决, 如果还没有解决的话:在 Node.js 中每个 js 文件都是一个独立的作用域,别的文件通过 require() 方法导入当前 js 文件后默认是无法访问到文件中的任何内容的。
exports
是
module.exports
的简短引用形式(相当于快捷方式),并不是全局变量,提供了外部访问接口(每个模块都提供了 exports 对象,外部需要访问的成员可以挂载到 exports 对象中);默认使用时需要通过 “.” 的方式调用对象中的成员。A模块
// 定义变量
var str = 'A模块!';
var obj = {name:'小小',age:20,sex:'girl'}
// 将外部需要访问的成员挂载到 exports 对象中,对外提供接口,通过这种方式可以挂载多个成员
exports.str = str;
// 与 exports 中的 add 函数并不是同一个函数
function add (x, y) {
return x-y;
}
// 将函数挂载到 export
exports.add = function (x, y) {
return x+y;
}
console.log('add:'+ add(10,20)); // add:-10
B模块
// 访问 A 模块中的成员,必须在该模块下引入 A 模块
var Aexports = require('./A'); // 使用模块时 后缀名 可以省略
// 获取 exports 对象,通过 “.” 的方式使用 A 模块中的成员
console.log(Aexports.str); // A模块!
console.log(Aexports.add(10,20)); // 30
// 当前 Aexports 存储是一个对象,存储的为外部可访问的成员
console.log(Aexports); // { str: 'A模块!', add: [Function] }
X模块
// 定义变量
var str = 'X模块!';
// 定义对象
var obj = {name:'小小',age:20,sex:'girl'}
// 定义函数
function add (x, y) {
return x-y;
}
// 将 str 直接赋值给 exports 对象
//exports = str; // 在引用该模块的模块中打印的结果为空对象;所以通过直接赋值的方式无法将对外的成员挂载到 exports 对象中
// 不使用挂载的方式,直接导出某个成员,通过该方式只能导出单个成员
module.exports = str; // 在 Y 模块中可以直接使用 X模块 导出的成员,不需要通过 “.” 的方式
// 再次赋值时,当前值会覆盖之前的值
module.exports = add;
/*// 通过对象的方式挂载多个成员(道高一尺魔高一丈)
module.exports = {
add: function (x, y) {
return x-y;
},
str: 'hello word!'
}*/
Y模块
// 访问 X 模块中的成员,必须在该模块下引入 X 模块
var Xexports = require('./X'); // 使用模块时 后缀名 可以省略
// 不需要 "." 的方式可以直接使用
var test = 'module.exports' + Xexports;
console.log(test); // 输出结果
补充: 在写 JS 代码时如果使用 “无分号” 的风格,需要注意当一行代码是以 “(”、“[” 、“`” 开头时可能会报错,在该行代码前面加一个 分号 即可解决问题(无论使用何种风格遇到上述情况时最好都加上分号)。