ค้นหาเว็บไซต์

javascript - React-Native metro bundler ไม่สามารถให้บริการไฟล์ใด ๆ ได้


Metro bundler สามารถแก้ไขกราฟการพึ่งพาได้ (แอปเริ่มต้นในอีมูเลเตอร์) แต่ไม่สามารถแก้ไขทรัพยากรใด ๆ ได้ ดังนั้นรูปภาพทั้งหมดในแอปจึงหายไป

ปัญหานี้เกิดขึ้นเฉพาะหลังจากที่ฉันอัปเกรดจาก [email เป็น 0.59

Looking for JS files in
   /Users/name/app/MyApp/artifacts
   /Users/name/app/MyApp/node_modules

warning: the transform cache was reset.
Loading dependency graph, done.
 DELTA  [android, dev] artifacts/index.js ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ 100.0% (2921/2921), done.

 MAP  [android, dev] artifacts/index.js ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ 100.0% (1/1), done.


::ffff:127.0.0.1 - - [30/Aug/2019:06:27:17 +0000] "GET /node_modules/my-assets/artifacts/assets/images/Logo.png?platform=android&hash=someHash HTTP/1.1" 404 221 "-" "okhttp/3.12.1"

^^^ปัญหาปรากฏขึ้นเมื่อไปยังมุมมองใดๆ ที่มี <Image source=... />

โมดูล my-assets มีอยู่จริงและประกอบด้วยสินทรัพย์ทั้งหมดที่ต้องการ

เริ่มต้น: node node_modules/react-native/local-cli/cli.js start --reset-cache --projectRoot artifacts

โฟลเดอร์ artifacts มีโค้ด .js ที่ถูกแปลงมาจาก .ts

โครงสร้างไฟล์ของฉันดูเหมือนแบบนี้

.
├── artifacts # transpiled js files
├── node_modules #npm modules
└── src # ts files

ผลลัพธ์ของเซิร์ฟเวอร์ bundler

metro.config.js

module.exports = {
    watchFolders: [path.join(__dirname, 'node_modules')],
    transformer: {
        getTransformOptions: async () => ({
            transform: {
                experimentalImportSupport: false,
                inlineRequires: false
            }
        })
    },
    resolver: {
        blacklistRE: blacklist([       /node_modules\/.*\/node_modules\/react-native\/.*/]),
        assetRegistryPath: path.resolve('node_modules/react-native/Libraries/Image/AssetRegistry')
    }
}

การพึ่งพา :

[email  /Users/name/app/MyApp
├── [email   extraneous
└─┬ [email 
  └─┬ @react-native-community/[email 
    ├── [email 
    └─┬ [email 
      └── [email   deduped

ฉันก็พยายามไปที่ URL ในเบราว์เซอร์เช่นกัน แต่ก็พบข้อผิดพลาด 404 สำหรับคำขอทั้งสอง

http://localhost:8081/node_modules/my-assets/artifacts/assets/images/Logo.png?platform=android&hash=someHash

http://localhost:8081/node_modules/metro/src/Bundler/util.js # request to any js file also return 404

-- อัปเดต --

การล้างแคชและการลบ $TMPDIR ไม่ช่วย

คำตอบ #1

ลองล้างแคชของคุณแล้วลองใหม่อีกครั้ง

rm -rf $TMPDIR/react-native-packager-cache-*
rm -rf $TMPDIR/metro-bundler-cache-* 
rm -rf $TMPDIR/haste-*;
yarn cache clean

คำตอบ #2

กรุณาลองคำสั่งนี้

npm cache clean

บทความที่เกี่ยวข้อง