1,问题描述
背景:scrapyd上传的py文件,使用execjs调用Linux中的js文件,其中js引用了crypto-js,但是报错找不到这个模块(已安装)
//适配多个解密const CryptoJS =require("crypto-js");// const CryptoJS = require("/usr/local/lib/node_modules/crypto-js");var _0x14e728 =newDate();functionhash(type, value){if(type =='md5'){return CryptoJS.MD5(value).toString();}if(type =='sha1'){return CryptoJS.SHA1(value).toString();}if(type =='sha256'){return CryptoJS.SHA256(value).toString();}}functioncookies(_0x3d7469){function_0x56cee0(_0xa58645, _0xf56c7e){var _0x37f1b9 = _0x3d7469["chars"]["length"];for(var _0x268aea =0; _0x268aea < _0x37f1b9; _0x268aea++){for(var _0x4614fb =0; _0x4614fb < _0x37f1b9; _0x4614fb++){var _0x235ad1 = _0xf56c7e[0]+ _0x3d7469["chars"]["substr"](_0x268aea,1)+ _0x3d7469["chars"]["substr"](_0x4614fb,1)+ _0xf56c7e[1];if(hash(_0x3d7469['ha'], _0x235ad1)== _0xa58645){return[_0x235ad1,newDate()- _0x14e728];}}}}var _0x732635 =_0x56cee0(_0x3d7469["ct"], _0x3d7469["bts"]);return{'__jsl_clearance_s': _0x732635[0]};}// _0x3d7469 = {// "bts": ["1684222849.145|0|NKW", "el7hb7LKwY%2BSlBVcjmZAyI%3D"],// "chars": "JdzZAHOVmwUgOAZudnYlem",// "ct": "a3a56368e8dd9b39a02bf1dba60dc39eaaf6a0fe2c8c868c902074dfb4062e82",// "ha": "sha256",// "tn": "__jsl_clearance_s",// "vt": "3600",// "wt": "1500"// }// console.info(cookies(_0x3d7469))
2,解决办法
2.1方法一
1, 执行命令
npm -g root
,查看全局安装的 Node.js 模块所在的路径
2, 将引用模块的路径改为绝对路径const CryptoJS = require(“/usr/local/lib/node_modules/crypto-js”);
这个虽然能解决,但是没有逼格,所以请出二号选手
2.2方法二
1,首先cd到文件所在的位置,执行命令
npm init
,这个命令用于初始化一个新的 Node.js 项目的命令。它会创建一个 package.json 文件
2,然后在这个位置
npm install [你要安装模块]
,再去执行js文件
node xxx.js
,就可以了
3,这里就不用再修改绝对路径了
注:后面我将这个js目录移到/opt/lily/js目录下面又报找不到这个模块的错
方法三
看日志,可以看到说是当前模块加载错误的来源是位于 “/opt/lily” 目录下的一个文件,所以我们要在这个目录下执行命令
npm init
,然后再
npm install [你要安装模块]
版权归原作者 就不李你 所有, 如有侵权,请联系我们删除。