我写了一个小的.js文件,里面有3个函数,可以方便地进行现场cookie管理。以下是该文件的来源:
// Make Cookie
function Bake(name,value) {
var oDate = new Date();
oDate.setYear(oDate.getFullYear()+1);
var oCookie = encodeURIComponent(name) + '=' + encodeURIComponent(value) + ';expires=' + oDate.toGMTString() + ';path=/';
document.cookie= oCookie;
}
// Read Cookie
function Eat(name){
name = name.toLowerCase();
var oCrumbles = document.cookie.split(';');
for(var i=0; i<oCrumbles.length;i++)
{
var oPair= oCrumbles[i].split('=');
var oKey = decodeURIComponent(oPair[0].trim().toLowerCase());
var oValue = oPair.length>1?oPair[1]:'';
if(oKey == name)
return decodeURIComponent(oValue);
}
return '';
}
// Delete / Void Cookie
function Burn(name){
Bake(name,'');
}
我把.js文件放到Cloud9上的“/ models”文件夹中。在我的index.js中,我确实有一行:var OCookie = require('../models/oatmealcookie');
来包含我的自定义“库”。但是,仍然在index.js中,我尝试在重定向之前调用OCookie.Bake('test','testvalue');
,并在页面上显示错误TypeError: OCookie.Bake is not a function
。关于为什么它无法将我的功能识别为功能的任何帮助?
答案 0 :(得分:3)
如果这是您的整个文件,则不会通过module.exports
导出任何功能。实际上,您的文件只运行一次,Bake
,Eat
和Burn
被声明为模块的函数,但没有其他模块可以使用它们。
您需要以下内容:
module.exports = {
Bake: Bake,
Eat: Eat,
Burn: Burn
};
以便其他模块可以使用您的功能。
答案 1 :(得分:1)
您需要export
您的函数,以便node.js在您require
时识别它们。
请参阅此处:http://www.sitepoint.com/understanding-module-exports-exports-node-js/例如。
var exports = module.exports = {
// Make Cookie
'Bake': function (name,value) {
var oDate = new Date();
oDate.setYear(oDate.getFullYear()+1);
var oCookie = encodeURIComponent(name) + '=' + encodeURIComponent(value) + ';expires=' + oDate.toGMTString() + ';path=/';
document.cookie= oCookie;
}
// Read Cookie
'Eat': function (name){
name = name.toLowerCase();
var oCrumbles = document.cookie.split(';');
for(var i=0; i<oCrumbles.length;i++)
{
var oPair= oCrumbles[i].split('=');
var oKey = decodeURIComponent(oPair[0].trim().toLowerCase());
var oValue = oPair.length>1?oPair[1]:'';
if(oKey == name)
return decodeURIComponent(oValue);
}
return '';
}
// Delete / Void Cookie
'Burn': function (name){
Bake(name,'');
}
}
按照惯例,你可以用小写字母开始你的函数名称。
答案 2 :(得分:1)
模块末尾需要exports.Bake = Bake
。