我们正在构建一个Web应用程序(在Angular 2中,虽然我不确定这是否是我的问题的原因)我们还需要作为Electron应用程序运行。我已经扩展了解决方案并替换了package.json中的项目,以便在启动时启动Electron。由于我不明白的原因,在我们的解决方案中,它正在寻找驱动器根文件夹中的相对资源路径,而不是从中启动应用程序的文件夹(C:\ Source \ NameOfMyApp)。
有人可以解释为什么会这样吗?
{
"main": "electron-main.js",
"scripts": {
"start": "electron ."
}
},
"devDependencies": {
"electron-prebuilt": "^1.2.0"
}
当我运行npm start
时,index.html会运行,但找不到任何资源。
<link rel="stylesheet" href="test.css">
其中test.css是与index.html在同一文件夹中存在的文件
const app = electron.app;
const BrowserWindow = electron.BrowserWindow;
let mainWindow;
function createWindow() {
mainWindow = new BrowserWindow({ width: 1200, height: 900 });
console.log("__dirname", __dirname);
mainWindow.loadURL(`file://${__dirname}/index.html`);
// Open the DevTools.
mainWindow.webContents.openDevTools();
mainWindow.on('closed',
function() {
mainWindow = null;
});
}
app.on('ready', createWindow);
我的理解是它应该在创建应用程序的同一文件夹中查找文件,而不是从根目录中查找文件,但Electron无论出于何种原因都假设所有相对链接都来自根C:/
级别。 / p>
答案 0 :(得分:2)
您的<base href="/" >
中有index.html
吗?我相信电子使用文件系统而/
是文件系统的根,所以C:\
。
您应该将<base href="/">
更改为index.html
所在的路径
<base href="C:/path/to/index">
答案 1 :(得分:1)
如果您希望自己的应用在浏览器和Electron中使用相对路径,则需要通过将以下内容添加到public static void main(String[] args) throws IOException {
String urlPath = "https://www.nseindia.com/content/historical/EQUITIES/2015/FEB/cm25FEB2015bhav.csv.zip";
URL url = new URL(urlPath);
// Option - 1:
URLConnection conn = url.openConnection();
conn.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11");
conn.connect();
// Option - 2:
// HttpURLConnection connection = (HttpURLConnection) url.openConnection();
// connection.addRequestProperty("REFERER", https://www.nseindia.com/products/content/equities/equities/archieve_eq.htm);
// connection.setRequestMethod("GET");
String zipBhavCopy = "C:\\zipBhavCopy.zip";
FileUtils.copyURLToFile(new URL(urlPath), new File(zipBhavCopy));
}
来指定相对根:
index.html