From 9636804b9edb39f38891cd190b0695eebdde2d44 Mon Sep 17 00:00:00 2001 From: xietianxin Date: Fri, 8 Dec 2017 16:35:48 +0800 Subject: [PATCH 1/2] fix: fix fis.require global package need --- fis-kernel.js | 18 ++++++++++++++++-- package.json | 7 ++++--- 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/fis-kernel.js b/fis-kernel.js index d0ba9de..d1ff293 100644 --- a/fis-kernel.js +++ b/fis-kernel.js @@ -5,6 +5,8 @@ 'use strict'; +var paths = require('path'); +var klawSync = require('klaw-sync'); var last = Date.now(); //oo @@ -78,6 +80,7 @@ fis.require = function(){ var name = Array.prototype.slice.call(arguments, 0).join('-'); if(fis.require._cache.hasOwnProperty(name)) return fis.require._cache[name]; var names = []; + var projectModulePath = void 0; for(var i = 0, len = fis.require.prefixes.length; i < len; i++){ try { var pluginName = fis.require.prefixes[i] + '-' + name; @@ -89,8 +92,19 @@ fis.require = function(){ fis.log.error('load plugin [' + pluginName + '] error : ' + e.message); } } catch (e){ - if (e.code !== 'MODULE_NOT_FOUND') { - throw e; + try { + projectModulePath = klawSync(process.cwd(), { + nofile:true, + filter: function(item){ + return item.path.match(pluginName) + } + })[0].path; + path = require.resolve(projectModulePath); + return fis.require._cache[name] = require(projectModulePath); + } catch (e) { + if (e.code !== 'MODULE_NOT_FOUND') { + throw e; + } } } } diff --git a/package.json b/package.json index c503d9e..f8234f7 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "fis-kernel", "description": "fis kernel.", - "version": "2.0.19", + "version": "2.0.20", "author": "FIS Team ", "homepage": "http://fis.baidu.com/", "license": "MIT", @@ -20,8 +20,9 @@ "test": "mocha test/ut" }, "dependencies": { - "tar": "2.2.1", - "iconv-lite": "0.2.10" + "iconv-lite": "0.2.10", + "klaw-sync": "^3.0.2", + "tar": "2.2.1" }, "devDependencies": { "chai": "1.9.1", From 1bbded9ca47ecfa279959e6c2ce42c0706295cc1 Mon Sep 17 00:00:00 2001 From: xietianxin Date: Fri, 8 Dec 2017 17:56:11 +0800 Subject: [PATCH 2/2] fix: fix undefined.path bug --- fis-kernel.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/fis-kernel.js b/fis-kernel.js index d1ff293..e8dc61c 100644 --- a/fis-kernel.js +++ b/fis-kernel.js @@ -98,7 +98,10 @@ fis.require = function(){ filter: function(item){ return item.path.match(pluginName) } - })[0].path; + }); + projectModulePath = projectModulePath.length ? projectModulePath[0].path : void 0; + if(!projectModulePath) + throw e; path = require.resolve(projectModulePath); return fis.require._cache[name] = require(projectModulePath); } catch (e) {