Node: File json yang diperlukan tidak dihapus dari cache, bahkan setelah diinstal ulang

Dibuat pada 12 Okt 2015  ·  1Komentar  ·  Sumber: nodejs/node

Kami memiliki potongan kode ini di alat CLI kami:

  function getVersion() {
    return require('../../package.json').version;
  }

Seorang pelanggan mengalami masalah ketika dia menginstal ulang versi baru dari perangkat lunak kami melalui npm, dan ketika dia menjalankannya, dia melihat bahwa dia mendapatkan versi paket dari instalasi yang lebih lama.
Saya dapat memverifikasi dari log terminalnya bahwa paket yang lebih baru telah diinstal.
Jika ada bedanya, itu adalah alat yang diinstal secara global.

Saya dapat memiliki solusi dengan menghapusnya secara manual dari cache.

  function getVersion() {
    //fixing Node bug
    var name = require.resolve('../../package.json');
    delete require.cache[name];
    return require('../../package.json').version;
  }

Apakah ini bug, atau perilaku yang diharapkan?
Ini dialami di Node v4.1.2.
Saya tidak tahu apakah itu memengaruhi versi lain.

question

Komentar yang paling membantu

Ini adalah perilaku yang diharapkan, BUKAN bug, jika file json diperlukan setidaknya sekali sebelum file dimodifikasi dalam sistem file, itu akan menggunakan versi memcached di lain waktu. Dalam solusi Anda, Anda baru saja memperbarui cache, solusi lain adalah meminta file secara langsung dengan modul fs dan menguraikannya atau mengelolanya seperti yang Anda inginkan:

function getVersion() {
    return JSON.parse(fs.readFileSync('/path/to/file.json', 'utf8')).version;
}

>Semua komentar

Ini adalah perilaku yang diharapkan, BUKAN bug, jika file json diperlukan setidaknya sekali sebelum file dimodifikasi dalam sistem file, itu akan menggunakan versi memcached di lain waktu. Dalam solusi Anda, Anda baru saja memperbarui cache, solusi lain adalah meminta file secara langsung dengan modul fs dan menguraikannya atau mengelolanya seperti yang Anda inginkan:

function getVersion() {
    return JSON.parse(fs.readFileSync('/path/to/file.json', 'utf8')).version;
}
Apakah halaman ini membantu?
0 / 5 - 0 peringkat