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 · 240 天前 · 1539 次点击
    这是一个创建于 240 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    export default { count:1 }

    然后项目中

    import {count} from '***'


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

    @Baymaxbowen
    @weijiagege
    @lisongeee
    @lopda
    @Finnn
    @yhxx
    lopda
        27
    lopda  
       235 天前
    @jahnsli 按照你说的,看了下,果然是这样,如果通过添加 --force 能解决也行,如果无法解决 vite 这个问题,暂时我是添加了 sh 进行处理的

    run.sh

    ```
    rm -rf node_modules

    pnpm install
    pnpm run dev

    ```
    package.json:

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