我遇到了一个奇怪的问题我相信(。我有一个只有在生产/Linux服务器上的问题,而不是在Local -Host OSX上给我问题。
我有一个模块,该模块在文件上方的两个目录:
: controller.counties.js导入管理器模块如下: import Manager from '../../common/objects/Manager';
将其编译到ES5的原因为: const Manager = require('../../common/objects/Manager);
Manager.js:
const Manager = {
req: {},
res: {},
data: [],
init: function(req,res) {
const mng = this;
mng.req = req;
mng.res = res;
mng.data = req.body;
return Promise.resolve(mng);
},
handle: function(fn, ...params) {
return async (manager) => {
const args = getArgs(params, manager);
const data = await fn(args);
const mng = this;
mng.req = manager.req;
mng.res = manager.res;
mng.data = data;
return Promise.resolve(mng);
};
},
pass: function(fn, ...params) {
return async (manager) => {
const args = getArgs(params, manager);
await fn(args);
const mng = new Manager();
mng.req = manager.req;
mng.res = manager.res;
mng.data = manager.data;
return Promise.resolve(mng);
};
}
};
function getArgs(params, manager) {
const args = [];
params.forEach(function(param) {
if (param.indexOf('.') > -1) {
const split = param.split('.');
const value = getDeepValue(manager, split);
return args.push(value);
} else {
const val = manager[param];
args.push(val);
}
}, this);
return args;
}
export function getDeepValue(object, array) {
const prop = array[0];
const val = object[prop];
if (array.length === 1) {
return val;
}
const newArray = array;
newArray.splice(0, 1);
return getDeepValue(val, newArray);
}
module.exports = Manager;
我一直在Linux OS中获得cannot find module ../../common/objects/Manager
,但在Local -Host OSX上工作正常。
有人知道为什么我可能会在OSX和Linux之间存在这些不一致之处吗?据我了解,Linux和OSX应该在Node.js上几乎相同,但是Linux是否可以防止从较高目录中导入/需要模块?
jfriend00刚刚回答了我的问题 - 请参阅评论