[vue 项目] 缺少 package.json 如何才能运行 vue 项目? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
OkabeRintaro
V2EX    前端开发

[vue 项目] 缺少 package.json 如何才能运行 vue 项目?

  •  
  •   OkabeRintaro 2022-06-28 16:44:45 +08:00 2540 次点击
    这是一个创建于 1277 天前的主题,其中的信息可能已经有所发展或是发生改变。
    复制了一个项目,但是这个项目并没有 package.json 文件和 vue.config.js 文件,如何才能让他运行起来?是 从网页的 sourcemap 文件扒下来的 想复现下 但是运行不了
    29 条回复    2022-07-01 03:51:12 +08:00
    OkabeRintaro
        1
    OkabeRintaro  
    OP
       2022-06-28 17:17:22 +08:00
    难道无法补全吗?
    node_modules 的文件好像都是有用的
    del1214
        2
    del1214  
       2022-06-28 17:42:58 +08:00
    逆向工程一下
    OkabeRintaro
        3
    OkabeRintaro  
    OP
       2022-06-28 17:59:32 +08:00
    @del1214 我是用了 source detecotor 和 Save All Resources 这两个插件,把源码扒下来了,但是不知道怎么运行,现在 app.vue 啥的都是正常代码,但是缺少 package.json 文件这些玩意,需要什么依赖也不知道。 试过套上一个新创建的 vue 初始项目,还是不行 。。。。。
    renmu123
        4
    renmu123  
       2022-06-28 19:11:18 +08:00 via Android
    先运行看看,一个一个解决报错
    liyang5945
        5
    liyang5945  
       2022-06-28 19:23:57 +08:00
    网址发一下,我来试试,我之前扒过一个 react 的项目
    jydeng
        6
    jydeng  
       2022-06-28 19:28:23 +08:00
    只能逆向了,尝试从 import 入手
    shanyuhai123
        7
    shanyuhai123  
       2022-06-28 19:47:23 +08:00
    如果 package.json 和 vue.config.js 有一堆骚操作的话就很难,看运气了。
    flyqie
        8
    flyqie  
       2022-06-29 08:16:53 +08:00 via Android   1
    以前测试过用 sourcemap 逆向 vue 项目。

    得出的结论是,这玩意要能跑起来可完全不容易。

    假设你拿到的 sourcemap 是完整可用的,那么你会遇到如下问题:

    1. 独立的 css/less/sass/scss 文件大概率是不存在的,如果很不幸你遇到了 import 这些文件而不是直接写在 vue 的话,你需要去打包后的 css 里手动提取出来。稍微庆幸的是,除非全局引入,不然每个页面的样式基本都会是同一个 data-v-id 。

    2. sourcemap 解包后可能会出现带后缀以及不带后缀的文件,你需要自行挑选出来原始文件,但在我个人经验上,基本都是无后缀的是原始文件。

    3. vue.config.js ,起码我没见到过有的,大概率得手动写一下。

    4. package.json 是不可能有的,这个你纯粹想多了,真正的难点也在这里,你需要去可能非常不全的 node_modules 目录里手动逐个查依赖,这个过程很费劲,因为有些时候你可能找的一头雾水,这个时候就得试着把项目跑起来按照报错找依赖。

    各大打包工具对 sourcemap 都是抱着调试的用途去生成的,根本不可能把开箱即用的项目代码扔进去,找思路可以,原样跑起来非常费劲。
    flyqie
        9
    flyqie  
       2022-06-29 08:26:56 +08:00 via Android
    对了,还有个问题。

    你在 sourcemap 找到的 image 等文件,大概率不是直接可用的。

    webpack 什么的会搞个花活,那里面并不直接是文件内容,而是一段 js ,js 里面才会写真实路径。

    大文件会指向打包后项目代码的 url(如 images/some_source_name.random_id.ext_name),你得手动下载下来替换。

    小文件会直接 base64 编码成 data url ,提取出来替换就可以了。
    flyqie
        10
    flyqie  
       2022-06-29 08:46:11 +08:00 via Android
    发了上面这些,就想告诉你一件事。

    这玩意,如果你 souercemap 和打包后项目文件完整,是可以跑起来的。

    但是你要做的事情非常多,时间精力消耗很大。

    不是有 sourcemap 就能万事大吉,完整 sourcemap 只是给你个可能性。
    OkabeRintaro
        12
    OkabeRintaro  
    OP
       2022-06-29 09:44:21 +08:00
    @flyqie 太强了,大佬,总结了这么多,你一定是在这方面踩过许多坑(哭)
    OkabeRintaro
        13
    OkabeRintaro  
    OP
       2022-06-29 10:49:40 +08:00
    @liyang5945 期待一下你的
    flyqie
        14
    flyqie  
       2022-06-29 11:33:58 +08:00 via Android
    @OkabeRintaro

    算不上大佬,不过确实踩了不少坑。

    有 sourcemap 你要知足,没 sourcemap 我都搞过。

    之前闲的没事接了个小的外包单子。

    vue + php ,前任跑路了要加功能,连个 sourcemap 也没留下。幸好功能不算复杂(前端没多少代码,主要在后端),照着打包后的 js 文件重写了一遍。

    那感觉,生不如死,不过倒也接触到了不少新知识。
    OkabeRintaro
        15
    OkabeRintaro  
    OP
       2022-06-29 11:52:16 +08:00
    @flyqie 唉 有 sourcemap 我都感觉搞不懂,自己代码量太少了,经验不足,有时都不知道他源码为什么要这么写或者直接就遗忘在脑后了
    OkabeRintaro
        16
    OkabeRintaro  
    OP
       2022-06-29 17:03:44 +08:00
    心累,弄了半天还是失败了,有没有高手再指导一下
    liyang5945
        17
    liyang5945  
       2022-06-29 21:12:59 +08:00
    @OkabeRintaro #13 我大概跑起来了,但是工作量比较大,我只弄了前面几个翻页,需要方法的话我可以教给你,下面是 package.json
    {
    "name": "hello-world",
    "version": "0.1.0",
    "private": true,
    "scripts": {
    "serve": "vue-cli-service serve",
    "build": "vue-cli-service build"
    },
    "dependencies": {
    "vue": "^2.6.14",
    "vue-router": "^3.5.3",
    "throttle-debounce": "^5.0.0",
    "vue-slider-component": "^3.2.16",
    "howler": "^2.2.3",
    "moment": "^2.29.3",
    "vue-m-message": "3.1.0",
    "element-ui": "^2.15.9",
    "apollo-client": "2.6.10",
    "apollo-link-http": "1.5.17",
    "apollo-cache-inmemory": "^1.6.6",
    "vue-apollo": "^3.1.0",
    "apollo-link": "^1.2.14",
    "vue-meta": "^2.4.0",
    "axios": "^0.27.2",
    "js-sha1": "^0.6.0",
    "supports-webp": "^2.0.1",
    "twemoji": "^14.0.2",
    "whatwg-fetch": "^3.6.2",
    "vue-fullscreen": "^2.6.1",
    "jquery": "^3.6.0",
    "js-cookie": "^3.0.1",
    "svgxuse": "^1.2.6",
    "vue-qr": "^4.0.9"
    },
    "devDependencies": {
    "@vue/cli-plugin-router": "~4.5.15",
    "@vue/cli-plugin-typescript": "~4.5.15",
    "@vue/cli-service": "~4.5.15",
    "sass": "^1.26.5",
    "sass-loader": "^8.0.2",
    "typescript": "~4.1.5",
    "vue-template-compiler": "^2.6.11"
    },
    "browserslist": [
    "> 1%",
    "last 2 versions",
    "not dead"
    ]
    }
    OkabeRintaro
        18
    OkabeRintaro  
    OP
       2022-06-30 08:26:13 +08:00 via Android
    @liyang5945 呜呜大佬 求教方法
    OkabeRintaro
        19
    OkabeRintaro  
    OP
       2022-06-30 08:27:47 +08:00 via Android
    @liyang5945 跑起来是怎么样的?我还没见过 好惨 有截图吗
    liyang5945
        20
    liyang5945  
       2022-06-30 09:00:36 +08:00
    @OkabeRintaro #19 首页正常,然后可以翻个两三页不报错,但是样式错乱
    OkabeRintaro
        21
    OkabeRintaro  
    OP
       2022-06-30 09:27:18 +08:00
    @liyang5945 大佬你的项目结构和我一楼发的图片是一样的吗? 加了 package.json 我咋还是跑不起来呀
    liyang5945
        22
    liyang5945  
       2022-06-30 09:52:37 +08:00
    @OkabeRintaro #21 跑起来还要做挺多工作的,我可以远程指导你,但是要收点小费
    OkabeRintaro
        23
    OkabeRintaro  
    OP
       2022-06-30 10:02:40 +08:00
    @liyang5945
    用的是 vue create hello-world 的创建方式
    我的脚手架版本:3.12.1
    vue 版本:2.6.10
    然后把我的 package.json 文件和你的合并,我和你有重复的,就删除你的,只用我的。
    接着 node_modules 文件夹删除,重新 npm i , 然后 npm run serve
    但还是报错了,报错图片在以下链接:
    <img src="https://pic.imgdb.cn/item/62bcff471d64b070668a40b1.png"/>
    然后,这是我的项目目录结构:
    <img src="https://pic.imgdb.cn/item/62bd03a11d64b07066911f4b.png"/>
    最后,这是我的 node_modules 文件夹和源码的 node_modules 的对比,图里的这些文件夹是我所没有的,我把它们的名字复制好保存出来。
    <img src="https://pic.imgdb.cn/item/62bd04211d64b07066919507.png"/>
    OkabeRintaro
        24
    OkabeRintaro  
    OP
       2022-06-30 10:04:44 +08:00
    @liyang5945 啊 感谢大佬,可惜我只是刚工作的,没有钱 呜呜 看我历史发帖记录就能知道
    OkabeRintaro
        25
    OkabeRintaro  
    OP
       2022-06-30 10:13:52 +08:00
    @liyang5945 还是谢谢大佬啦
    liyang5945
        26
    liyang5945  
       2022-06-30 17:03:57 +08:00
    @OkabeRintaro #25 小老弟留个 qq 吧,不收你钱了,晚上教你一下
    WenJimmy
        27
    WenJimmy  
       2022-06-30 17:47:07 +08:00
    这怎么还把 sourcemap 给暴露出来了
    OkabeRintaro
        28
    OkabeRintaro  
    OP
       2022-06-30 18:46:47 +08:00
    @liyang5945 谢谢大佬! QQ:26 零五八①⑤44 八 不过今晚加班,可能会很晚。可能没有时间(哭)
    flyqie
        29
    flyqie  
       2022-07-01 03:51:12 +08:00 via Android
    @WenJimmy

    知乎之前不也爆过嘛。

    这种事,可大可小。

    毕竟哪怕有 sourcemap 也大概率没办法轻易还原整体项目。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2543 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 04:45 PVG 12:45 LAX 20:45 JFK 23:45
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86