电子寻找根文件夹中的资源

时间:2016-08-11 07:15:37

标签: angular npm chromium electron

我们正在构建一个Web应用程序(在Angular 2中,虽然我不确定这是否是我的问题的原因)我们还需要作为Electron应用程序运行。我已经扩展了解决方案并替换了package.json中的项目,以便在启动时启动Electron。由于我不明白的原因,在我们的解决方案中,它正在寻找驱动器根文件夹中的相对资源路径,而不是从中启动应用程序的文件夹(C:\ Source \ NameOfMyApp)。

有人可以解释为什么会这样吗?

对package.json的更改

{
    "main": "electron-main.js",
    "scripts": {
        "start": "electron ."
    }
},
"devDependencies": {
    "electron-prebuilt": "^1.2.0"
}

当我运行npm start时,index.html会运行,但找不到任何资源。

index.html中的代码

<link rel="stylesheet" href="test.css">

其中test.css是与index.html在同一文件夹中存在的文件

电子邮件中的代码 - main.js

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);

DevTools控制台错误

The error message in the DevTools Console

我的理解是它应该在创建应用程序的同一文件夹中查找文件,而不是从根目录中查找文件,但Electron无论出于何种原因都假设所有相对链接都来自根C:/级别。 / p>

2 个答案:

答案 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