V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
jahnsli
V2EX  ›  JavaScript

npm 发布成功后, npm install 后,项目中导入的数据还是旧版本

  •  
  •   jahnsli · 2023-02-03 21:27:54 +08:00 · 2256 次点击
    这是一个创建于 663 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我的 npm 包导出了一些变量

    npm 版本 1.0.0

    const info = {
      name:'tom'
    }
    

    当我更改内容,发布 npm 版本 1.0.1

    const info = {
      name:'joy'
    }
    

    我在项目中成功更新 npm 到 1.0.1 ,添加导入其

    info.name 仍然是 tom

    如何使导入的数据保持最新

    yhxx
        1
    yhxx  
       2023-02-03 21:44:11 +08:00
    先检查一下 package-lock 里面是不是锁定了版本
    如果没问题的话去 npm 官网看一下是不是发布成功了,是不是发到了私有源
    learningman
        2
    learningman  
       2023-02-03 21:53:51 +08:00
    是不是 npm 用镜像了
    jahnsli
        3
    jahnsli  
    OP
       2023-02-03 21:56:31 +08:00
    @yhxx lock 文件已经删除了,已经发布成功项目中升级了,node_module 里是最新的, 但是页面中引入的数据还是上个版本,,删除 node_modules 重新安装就正常了 很奇怪
    jahnsli
        4
    jahnsli  
    OP
       2023-02-03 21:56:55 +08:00
    @learningman 这个指的是 ?
    lopda
        5
    lopda  
       2023-02-03 21:56:58 +08:00 via Android
    接楼上我加一个:
    1. 查看当前 npm 源是否官方,国内镜像源可能有延迟
    2.是否发布成功
    3.查看 lock 文件是否锁定
    jahnsli
        6
    jahnsli  
    OP
       2023-02-03 21:59:44 +08:00
    @lopda 指的是发布的官方源还是 ? 源是最新的, 安装成功后 node_modules 里面的数据也是最新的,但就是页面中引入的数据是旧的,删除 node_modules 重新安装就正常了
    lopda
        7
    lopda  
       2023-02-03 22:00:29 +08:00 via Android
    @jahnsli 你可以安装 nrm 进行配置 npm 的源
    lopda
        8
    lopda  
       2023-02-03 22:01:15 +08:00 via Android
    @jahnsli 哦哦哦,重新安装依赖解决了是吧~好的
    jahnsli
        9
    jahnsli  
    OP
       2023-02-03 22:02:17 +08:00
    @lopda 重新删了 node_modules 才能解决,但不能每次升级都删了重新安装吧。 不知道什么导致的,别的 npm 包都不需要删除 node_modules 就可以正常使用
    hellohy
        10
    hellohy  
       2023-02-03 22:29:39 +08:00
    也许你需要 npm link 或者 yalc ,都调完再发布 npm 包
    jahnsli
        11
    jahnsli  
    OP
       2023-02-03 22:37:19 +08:00
    @hellohy 但从更新后的 node_modules 里看数据是最新的,但从页面中导入就是旧的
    Finnn
        12
    Finnn  
       2023-02-03 22:40:15 +08:00
    没遇到要用插件的数据的情景, 可能是缓存?
    npm cache clear 试试
    jahnsli
        13
    jahnsli  
    OP
       2023-02-03 22:44:26 +08:00
    @Finnn 我想导入一些主题变量,export default { primaryColor } 然后多个项目使用
    lisongeee
        14
    lisongeee  
       2023-02-03 23:09:17 +08:00
    试试 项目根目录 package.json 的依赖中填写固定版本然后 npm install
    jahnsli
        15
    jahnsli  
    OP
       2023-02-03 23:25:03 +08:00
    @lisongeee 还是不行,node_modules 里看数据是最新的,但从页面中导入是旧的
    lisongeee
        16
    lisongeee  
       2023-02-04 00:14:46 +08:00
    > 但从页面中导入是旧的

    这句话是什么意思?你用的什么构建工具?这个工具是否会预构建生成缓存
    jahnsli
        17
    jahnsli  
    OP
       2023-02-04 00:36:13 +08:00
    @lisongeee 并没有用构建工具, 直接创建了个 js 文件,然后 export const info = {name:'test'},然后安装后在页面中 import
    lisongeee
        18
    lisongeee  
       2023-02-04 00:50:52 +08:00
    呃,在页面中 import 是什么意思?浏览器貌似不能像 node 一样直接导入 node_modules 里的文件
    可否直接给个 github demo 仓库
    weijiagege
        19
    weijiagege  
       2023-02-04 01:16:47 +08:00 via Android
    @lisongeee 猜测 op 的意思应该是在组件文件头部 import 了那个包,结果发现数据是上一版本的,而他直接从 node modules 进去看那个包里面 export 的数据又是新的
    Baymaxbowen
        20
    Baymaxbowen  
       2023-02-04 08:56:58 +08:00 via iPhone
    node modules 里面有.cache 的文件夹吗如果有就可以删掉 重新 star 就好了
    jahnsli
        21
    jahnsli  
    OP
       2023-02-04 09:06:50 +08:00
    @lisongeee
    @weijiagege https://github.com/laterdayi/test ,是的,我升级包发布后,项目中导入的变量仍是上个版本的
    jahnsli
        22
    jahnsli  
    OP
       2023-02-04 09:07:46 +08:00
    方便联系的,可以联系 Q ,839103055 ,有红包感谢~
    jahnsli
        23
    jahnsli  
    OP
       2023-02-04 09:09:59 +08:00
    @Baymaxbowen 没有发现.cache 文件
    jahnsli
        24
    jahnsli  
    OP
       2023-02-04 09:13:00 +08:00
    我在 npm 包中

    export default { count:1 }

    然后项目中

    import {count} from '***'


    第一次是正确的,如果我修改{count:2}并将 npm 包升级,项目中再次安装,node_modules 里的 count 是 2 ,但是页面中的 count 仍是 1
    jahnsli
        25
    jahnsli  
    OP
       2023-02-04 09:13:45 +08:00
    @jahnsli 只有删除 node_modules 重新安装才可以,但因为包升级频繁,不能每次都删除 node_modules
    jahnsli
        26
    jahnsli  
    OP
       2023-02-04 09:24:22 +08:00   ❤️ 1
    好像跟 vite 有关,每次浏览器访问的是 node_modules/.vite/deps/vars.js?v=2a48daf9 的数据,而不是新安装的 node_modules 里面的数据

    @Baymaxbowen
    @weijiagege
    @lisongeee
    @lopda
    @Finnn
    @yhxx
    lopda
        27
    lopda  
       2023-02-09 11:05:20 +08:00
    @jahnsli 按照你说的,看了下,果然是这样,如果通过添加 --force 能解决也行,如果无法解决 vite 这个问题,暂时我是添加了 sh 进行处理的

    run.sh

    ```
    rm -rf node_modules

    pnpm install
    pnpm run dev

    ```
    package.json:

    ```
    "r-dev": "sh run.sh"
    ```
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1040 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 19:54 · PVG 03:54 · LAX 11:54 · JFK 14:54
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.