我正在尝试在 react-native-windows 中构建 RDP 应用程序。但是即使已经安装了 os 模块,我也会遇到 Unable to resolve module os 错误。
我试过的:
- 重置缓存
- 删除 node_modules 文件夹并使用 npm install 再次安装。
代码:
import React, { Component } from 'react';
import { Text, View, StyleSheet, TouchableOpacity, TextInput, Button } from 'react-native';
class App extends Component {
constructor() {
super()
this.state = {
Ip: '',
UserName: '',
Password: '',
}
}
rdp = () => {
var rdp = require('node-rdp');
rdp({
address: this.state.Ip,
username: 'DOMAIN\'+ 'this.state.UserName',
password: this.state.Password
}).then(function () {
console.log('At this, point, the connection has terminated.');
});
}
render() {
return (
<View style={styles.Main}>
<Text style={styles.Title}>Remote Desktop Connection</Text>
<View style={styles.container}>
<View style={styles.InputFieldView}>
<Text>Ip Address : </Text>
<TextInput style={styles.InputField} onChangeText={(e) => { this.setState({ Ip: e }) }} />
</View>
<View style={styles.InputFieldView}>
<Text>UserName : </Text>
<TextInput style={styles.InputField} onChangeText={(e) => { this.setState({ UserName: e }) }} />
</View>
<View style={styles.InputFieldView}>
<Text>Password : </Text>
<TextInput style={styles.InputField} onChangeText={(e) => { this.setState({ Password: e }) }} />
</View>
<Button title="Submit" onPress={() => this.rdp()} />
</View>
</View>
)
}
}
const styles = StyleSheet.create({
Main: {
flex: 1,
alignItems: "center"
},
container: {
justifyContent: "center",
alignItems: "center",
},
InputFieldView: {
alignItems: 'flex-start',
marginBottom: 10,
},
InputField: {
width: 300,
borderRadius: 3,
},
Title: {
marginTop: 100,
marginBottom: 40,
fontSize: 30,
}
})
export default App;
错误:
error: Error: Unable to resolve module os from K:\native_windows\demo\node_modules\node-rdp\lib\rdp-file.js: os could not be found within the project or in these directories:
node_modules
If you are sure the module exists, try these steps:
1. Clear watchman watches: watchman watch-del-all
2. Delete node_modules and run yarn install
3. Reset Metro's cache: yarn start --reset-cache
4. Remove the cache: rm -rf /tmp/metro-*
1 | var Q = require('q');
2 | var fs = require('fs');
> 3 | var os = require('os');
| ^
4 | var path = require('path');
5 | var defaults = require('lodash.defaults');
6 | var sanitize = require("sanitize-filename");
at ModuleResolver.resolveDependency (K:\native_windows\demo\node_modules\metro\src\node-haste\DependencyGraph\ModuleResolution.js:129:15)
at DependencyGraph.resolveDependency (K:\native_windows\demo\node_modules\metro\src\node-haste\DependencyGraph.js:288:43)
at Object.resolve (K:\native_windows\demo\node_modules\metro\src\lib\transformHelpers.js:129:24)
at resolve (K:\native_windows\demo\node_modules\metro\src\DeltaBundler\traverseDependencies.js:396:33)
at K:\native_windows\demo\node_modules\metro\src\DeltaBundler\traverseDependencies.js:412:26
at Array.reduce (<anonymous>)
at resolveDependencies (K:\native_windows\demo\node_modules\metro\src\DeltaBundler\traverseDependencies.js:411:33)
at processModule (K:\native_windows\demo\node_modules\metro\src\DeltaBundler\traverseDependencies.js:140:31)
at addDependency (K:\native_windows\demo\node_modules\metro\src\DeltaBundler\traverseDependencies.js:230:18)
at async Promise.all (index 0)