<p>Momen dengan lokal: "./locale" tidak ditemukan</p>

Dibuat pada 22 Feb 2016  ·  48Komentar  ·  Sumber: moment/moment

Saya mendapatkan peringatan ini saat menggunakan webpack:

WARNING in ./~/moment/min/moment-with-locales.js
Module not found: Error: Cannot resolve 'file' or 'directory' ./locale in \node_modules\moment\min
@ ./~/moment/min/moment-with-locales.js 271:16-43

ada petunjuk?

Discussion Documentation Help Wanted

Komentar yang paling membantu

Saya menggunakan modul abaikan dengan hasil yang bagus. Ini mungkin membantu seseorang:

    // /app/js/webpack.config.js
    plugins: [

        // Fixes warning in moment-with-locales.min.js 
        //   Module not found: Error: Can't resolve './locale' in ...
        new webpack.IgnorePlugin(/\.\/locale$/)
    ]

Semua 48 komentar

Lihat # 1435. Solusi di bagian akhir. Terima kasih.

solusi yang disarankan di "plugin" webpack.config.js

new webpack.ContextReplacementPlugin(/moment[\\\/]locale$/, /^\.\/(en|de|cz|eu)$/)

tidak bekerja

Masalah yang disebutkan di atas adalah tentang require('./locale' + name) pernyataan yang disertakan dalam file min / moment-with-locales.js. Tidak perlu lagi karena semua lokal sudah termasuk dalam file ini sendiri.

Sayangnya webpack mencoba menyelesaikan semua pernyataan yang dibutuhkan - oleh karena itu peringatan ini.

@ichernev - Saya tidak menggunakan webpack, tapi sepertinya poin yang dibuat oleh @mheimschild masuk akal. Tidak yakin bagaimana menanganinya.

Solusi paling sederhana untuk meyakinkan webpack agar tidak mencari lokal yang sudah termasuk dalam moment-with-locales.js adalah dengan memaksanya untuk memuat sesuatu yang lain. Ini berhasil untuk saya:

instal modul kosong (itu sastra tidak mengandung apa pun)
npm install --save-dev empty-module
lalu konfigurasikan ContextReplacementPlugin sebagai berikut
new webpack.ContextReplacementPlugin(/\.\/locale$/, 'empty-module', false, /js$/)

Semoga ini membantu.

Terima kasih atas solusinya @mheimschild - Alangkah baiknya jika ini sudah diselesaikan di Webpack 2, bahkan jika modul kosong akan disertakan sebagai dependensi dev secara otomatis.

Sepertinya tidak perlu menggunakan empty-module , cukup ubah ke null, ini masih berfungsi di ContextReplacementPlugin

new webpack.ContextReplacementPlugin(/\.\/locale$/, null, false, /js$/)

baru saja mengalami masalah yang sama saat menggunakan momentjs melalui npm
Saya menemukan bahwa pada locales.js itu mengacu pada ./locale/
Saya berasumsi bahwa baris itu mencoba menemukan lokalisasi bahasa. CMIIW

Sementara file lokal ditempatkan di ../../locale/ dari locale.js
dengan mengubah baris itu menjadi require ('../../locale/' + name); Saya menyelesaikan masalah tetapi saya tidak dapat mengedit node_modules secara langsung seperti ini di server saya

akan mencoba cara webpack yang disebutkan di atas nanti

EDIT: Saya menjalankan ini di windows, sepertinya masalah jalur. Saya mencoba menjalankan momen di linux dan berfungsi dengan baik

Saya menggunakan modul abaikan dengan hasil yang bagus. Ini mungkin membantu seseorang:

    // /app/js/webpack.config.js
    plugins: [

        // Fixes warning in moment-with-locales.min.js 
        //   Module not found: Error: Can't resolve './locale' in ...
        new webpack.IgnorePlugin(/\.\/locale$/)
    ]

@miguelrincon berfungsi dengan baik!

Hebat. Berhasil!

@miguelrincon atau yang serupa - bisakah kita mendapatkan permintaan pull pada dokumen untuk itu? Itu akan ada di bagian penggunaan di bawah webpack.

Bagaimana Cara Memperbaiki di Aplikasi Hybrid Ionic 3.5 dengan Angular 4 di mana kami tidak memiliki file webpack.config?

Saya mencoba saran @miguelrincon di atas tetapi tidak berhasil.
yaitu Itu tidak membuang kesalahan selama pembuatan, tetapi kesalahan yang sama dilemparkan di log konsol browser.

Setelah melihat-lihat, saya menemukan ini dan berfungsi dengan sempurna!

https://github.com/afc163/react-boilerplate/commit/61ec8a19df0fcb56d407b795cb6c87141e0e14a7

\\ webpack.js

resolve: {
   ....
   alias: {
      moment$: 'moment/moment.js',
   },
   ...
}

Masalah ini muncul untuk saya di moment.js 2.19.0. Jika Anda ingin aplikasi Anda berfungsi sekarang, rollback harus dilakukan. Sebagai contoh:

npm install [email protected] --save

Terima kasih @ jeff3dx Ini memperbaiki masalah saya!

@ jeff3dx Saya mengalami hal yang sama persis dengan versi terbaru, tetapi menambahkan alias penyelesaian seperti yang disarankan oleh @ M1chaelTran masih melakukan trik.

Saya mengonfirmasi bahwa dengan menggunakan 2.18, masalah segera diperbaiki.

Sama disini. Menggunakan React 16, instal momen 2.19 dan dapatkan error. Dikembalikan kembali ke 2.18, tidak ada kesalahan.

sayang, saya menyelesaikannya!
src / lib / locale / locales.js di baris 61,
61 membutuhkan ('./ locale /' + name);
berubah menjadi:
61 membutuhkan ('./' + name);
"momen dengan lokal:" ./locale "tidak ditemukan" akan diselesaikan.

@ wushuang5112 Anda tidak dapat mengedit node_module, jadi solusi Anda harus menambahkan momen ke repositori, yang tidak baik

Kami juga baru saja mengalami masalah saat meningkatkan ke momen 2.19 di aplikasi yang juga menggunakan react dan webpack. Mengembalikan ke 2.18 memperbaikinya.

Alih-alih hanya memutar kembali saya akan menggunakan solusi @ M1chaelTran menggunakan alias untuk momentjs di dalam konfigurasi webpack. Bekerja seperti pesona dan memungkinkan saya untuk terus menggunakan yang terbaru.

terpecahkan! ... v2.19.1

@ M1chaelTran man Anda adalah berkah, terima kasih banyak !!!

Saya masih melihat masalah ini di v2.19.1

WARNING in ./~/moment/src/lib/locale/locales.js
Module not found: Error: Can't resolve './locale' in '/project/node_modules/moment/src/lib/locale'
 @ ./~/moment/src/lib/locale/locales.js 56:12-46
 @ ./~/moment/src/lib/locale/locale.js
 @ ./~/moment/src/moment.js
 @ dll reactBoilerplateDeps

Namun, trik alias @ M1chaelTran berhasil untuk saya.

@electrobabe Saya pikir masalahnya adalah ...

Untuk mengatasi ini: Can't resolve './locale' in , coba impor moment dan min/locales alih-alih moment-with-locales . Itu sudah diperbaiki untuk saya!

Referensi yang lebih baik untuk ini adalah:
http://momentjs.com/docs/#/i18n/loading -into-browser /

Menurunkan versi ke 2.18 tidak menyelesaikan masalah bagi saya. Masih memiliki ini: Kesalahan: Tidak dapat menemukan modul "./locale"

Yang aneh adalah untuk memperbaikinya:

  • dalam proyek react-native saya, saya harus mengimpor file moment-with-locales
  • dalam proyek reactjs saya, saya hanya perlu mengimpor file moment/locales

@manel elephant Saya pikir ini memecahkan masalah: https://github.com/moment/moment/issues/2979#issuecomment -346636284

Menurunkan versi ke 2.18 tidak menyelesaikan masalah bagi saya.

saya menggunakan cli sudut.
Saat bekerja tetapi ketika saya ingin mengekspor komponen saya dengan npm run packagr ==>

Mengompilasi ke FESM15
'locale' tidak diekspor oleh 'node_modulesmoment \ srcmoment.js'

BUAT ERROR
Tidak dapat memanggil namespace ('momen')
Error: Tidak dapat memanggil namespace ('moment')

seseorang dapat membantu saya?

Sepertinya ada banyak saran berguna di utas ini. Kami akan senang untuk mengambil beberapa PR di dokumen kami tentang ini! https://github.com/moment/momentjs.com

Terima kasih atas semua informasi.

UPDATE: Saya menemukan solusi.

Cara yang benar untuk mengimpor:

import * as moment_ from 'moment'; const moment = moment_;

dan di ng-package.json:

{ "lib": { "externals": { "moment": "moment" } } }

Menurut saya adalah strukturnya salah, yang eksternal tidak ada di dalam lib, jadi packgr sedang mencari lib.externals dan tidak dapat menemukan momen.

Ng-packgr & momen

Saya menggunakan versi terbaru, sekarang adalah 2.22.2.

Ketika saya mencoba menggunakan ng-packagr dan mengemas proyek saya, saya mendapatkan kesalahan ini. Sama seperti: @vZanchiV

'locale' tidak diekspor oleh 'node_modulesmoment \ srcmoment.js'

BUAT ERROR
Tidak dapat memanggil namespace ('momen')
Error: Tidak dapat memanggil namespace ('moment')

Dalam proyek itu importir dengan cara ini:

impor * sebagai momen dari 'momen';

Saya menemukan solusi yang tidak berjalan dengan baik, saya mencoba mengimpornya seperti:

import * sebagai momentImported dari 'moment';

Setelah metode ini saya dapat mengekspor proyek saya dengan ng-packagr tetapi kemudian saya gagal mengimpor proyek saya ke proyek lain, dengan masalah ini

Modul tidak ditemukan: Kesalahan: Tidak dapat menyelesaikan './locale' di 'C: \ development \ angularTest \ angulartestnode_modules \ modulename

Untuk mengkonfirmasi solusi @ francisrod01 , saya telah mengubah impor saya, jadi bukan

import moment from 'moment/min/moment-with-locales'

Saya berubah menjadi

import moment from 'moment'
import 'moment/min/locales'

Dan ini terpecahkan untuk saya. Semoga membantu.

Saya menemukan solusi alias yang diposting di atas oleh @ M1chaelTran berfungsi dengan baik. Jika seseorang yang menggunakan Laravel Mix bertanya-tanya bagaimana cara menerapkannya, webpack.mix.js akan terlihat seperti ini di bagian atas:

let mix = require('laravel-mix');

mix.webpackConfig({
    resolve: {
        alias: {
            moment$: 'moment/moment.js'
        }
    }
});

coba semua solusi di atas, hanya 'versi momen downgrade' yang bisa menyelesaikan. Tetapi beberapa modul saya seperti 'antd' membutuhkan 2.19.0. jadi saya pikir saya tidak bisa menurunkannya

        new webpack.ContextReplacementPlugin(/^\.\/locale$/, (context) => {
            if (!/\/moment\//.test(context.context)) return;

            Object.assign(context, {
                regExp: /^\.\/\w+/,
                request: '../../locale', // resolved relatively
            });
        }),

Solusi ini berhasil untuk saya.

Sepertinya masalah yang sama dengan # 4216 (dan # 3872 untuk boot).

Mungkin yang terbaik untuk merujuk ke # 4216 karena itu memiliki sejarah terbesar

@aaronkrohn terima kasih, solusi ini bekerja dengan react-boilerplate v.4

Coba muat lokal terlebih dahulu, bukan moment.min.js.

"momen": [
"../node_modules/moment/locale/en-au.js",
"../node_modules/moment/min/moment.min.js"
]

ini akan menyelesaikan masalah saya.

Saya memiliki momen 2.24.0 dan akhirnya ini berhasil untuk saya:

    // Fixes warning in moment-with-locales.min.js
    //   Module not found: Error: Can't resolve './locale' in ..
    new webpack.ContextReplacementPlugin(/^\.\/locale$/, context => {
      if (!/\/moment\//.test(context.context)) return

      Object.assign(context, {
        regExp: /^\.\/\w+/,
        request: '../locale', // resolved relatively
      })
    })

Hampir sama dengan memperbaiki @aaronkrohn , tetapi alih-alih request: '../../locale', saya harus menggunakan request: '../locale', .

Berikut ini perbaikan untuk masalah ini:

File: "moment \ src \ liblocalelocales.js" baris 56:
"./locale" perlu diubah menjadi "../../locale"

Alexandra

Cara mengatasinya sederhana ...

temukan hal seperti ini:

import moment from 'moment/src/moment';

dan ganti dengan ini

import * as moment from 'moment';

Dengan create-react-app , impor di bawah berfungsi dengan baik untuk saya

import * as moment from "moment/moment.js"

Dengan create-react-app , impor di bawah berfungsi dengan baik untuk saya

import * as moment from "moment/moment.js"

Solusi @mssui berhasil untuk saya

 "resolutions": {
    "moment": "2.24.0"
  }

tambahkan di atas ke package.json dan benang ulang. oke buat saya

webpack.config.js

tolong di mana saya dapat menemukan file ini, saya tidak dapat menemukan jalur yang Anda rujuk, Terima kasih sebelumnya,

Saya melakukan solusi dengan menyalin folder sumber momen dari proyek yang lebih lama, dan itu berhasil untuk saya

Lihat https://momentjs.com/docs/#/ -project-status /

Apakah halaman ini membantu?
0 / 5 - 0 peringkat