Ich habe ein benutzerdefiniertes npm module
Erstellt (verwendet xxx anstelle seines Namens) und verknüpfe es manuell mit npm install
.
Ich habe mich sehr bemüht und gesucht:
bevor Sie eine Frage stellen. Ich wäre dankbar, wenn mir jemand sagen würde, was mit meinem Code oder meinem Ansatz oder einem Fehler in meinem Code nicht stimmt.
Wenn ich react-native run-Android
Ausführe, wird der folgende Fehler von metro bundler
Ausgelöst.
Error: jest-haste-map: Haste module naming collision:
Duplicate module name: react-native
Paths: E:\cdg-native\CDG\node_modules\react-native-XXX\node_modules\react-native\package.json collides with E:\cdg-native\CDG\node_modules\react-native\package.json
This error is caused by `hasteImpl` returning the same name for different files.
Mein benutzerdefiniertes Modul package.json
Ist
{
"name": "react-native-xxx",
"version": "1.0.0",
"description": "Library to render xxx",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [
"react native xxx"
],
"author": "Firdous Nath",
"license": "ISC",
"peerDependencies": {
"react": "*",
"react-native": "*"
},
"devDependencies": {
"react": "^16.6.1",
"react-native": "^0.57.5",
"babel-cli": "^6.26.0",
"babel-plugin-transform-class-properties": "^6.24.1",
"babel-plugin-transform-object-rest-spread": "^6.26.0",
"babel-plugin-transform-runtime": "^6.23.0",
"babel-preset-env": "^1.6.1",
"babel-preset-react": "^6.24.1"
}
}
index.js
Des benutzerdefinierten Moduls ist wie folgt sehr einfach
import React from "react";
import { Text } from "react-native";
export default class XXXView extends React.Component {
render() {
return (
<Text> From custom module </Text>
);
}
}
datei, in der ich ein benutzerdefiniertes Modul verwende, ist
import React from "react";
import {StyleSheet, View} from "react-native";
import XXXView from "react-native-xxx"
//import {XXXView} from "react-native-xxx" -> I tried this as well
export default class App extends React.Component {
render() {
return (
<View style={styles.container}>
<XXXView/>
</View>
)
}
}
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: "center",
alignItems: "center",
backgroundColor: "#f5fcff"
}
});
Ich habe npm install /absolute/path/to/xxx
Versucht und das Modul richtig verknüpft. Mit richtig meine ich, dass ich das Paket react-native-xxx
Im Verzeichnis nodemodule
sehen kann. Ich habe alle möglichen Wege gegangen, aber nichts hat funktioniert.
Ich habe es auch versucht, aber keinen Erfolg gehabt
Es sieht so aus, als hätten Sie zwei verschiedene reaktionsnative Projektordner, von denen einer von einem anderen abhängig ist (er wird als Abhängigkeit von node_module aufgenommen), und Sie führen anscheinend Ihren Befehl zum Starten des Servers ("reaktionsnativer Start") aus dem Bibliotheksordner aus.