修復casperjs中require自定義module傳入絕對路徑不能識別的問題

Notice:此問題只在windows中出現。 node

問題現象: bootstrap

好比你在casperjs腳本中引入一個模塊這樣寫: windows

var util = require("d:/my_modules/util");
....


執行時就會報找不到module,d:/my_modules/util.js app

解決辦法: ui

找到casperjs安裝目錄bin下面bootstrap.js,找到代碼塊: spa

function possiblePaths(path, requireDir) {
        var dir, paths = []; 
        if (path[0] === '.') {
            paths.push.apply(paths, [
                fs.absolute(path),
                fs.absolute(fs.pathJoin(requireDir, path))
            ]); 
        } else if (path[0] === '/') {
            paths.push(path);
        } else {
            dir = fs.absolute(requireDir);
            while (dir !== '' && dir.lastIndexOf(':') !== dir.length - 1) {
                paths.push(fs.pathJoin(dir, 'modules', path));
                // nodejs compatibility
                paths.push(fs.pathJoin(dir, 'node_modules', path));
                dir = fs.dirname(dir);
            }   
            paths.push(fs.pathJoin(requireDir, 'lib', path));
            paths.push(fs.pathJoin(requireDir, 'modules', path));
        }   
        return paths;
    }
將第二個
else if (path[0] === '/')    

改爲 code

else if (path[0] === '/'|| (path.match(/^[A-Za-z]:/) && require('system').os.name=='windows'))
相關文章
相關標籤/搜索