我用nw.js和zip下列文件到一個package.nw
文件:與節點的WebKit瀏覽內部和外部文件
js/main.js
ui/widget.html
index.html
package.json
另外,我有一個沿包中附帶一個外部文件,所以我有這些到底文件:
package.nw
settings.json
的package.json
被配置爲啓動與index.html
。在那裏,我鏈接js/main.js
與腳本標籤:
<!-- inside index.html -->
<script src="js/main.js"></script>
的index.html
和代碼js/main.js
工作完美,我測試過他們。
這兩個有趣文件(ui/widget.html
和settings.json
分別包含完美的HTML和JSON)。
Inside js/main.js
我想同時加載ui/widget.html
和settings.json
。要做到這一點,我已經試過:
// inside js/main.js
var fs, w1, w2;
fs = require("fs");
w1 = fs.readFileSync("ui/widget.html");
w2 = require("ui/widget.html");
的結果是:
W1: 「」(空字符串)
W2:ERROR(意外令牌 「<」)
當我更改文件名時,我得到w1
錯誤ENOENT
(沒有這樣的文件或目錄)。所以我可以告訴用正確的文件名,對於w1
該條目實際上在包(no ENOENT
)中找到,但內容以某種方式未加載到字符串中。
w2
的錯誤可能是由隱含的JSON.parse()
或eval()
引起的,這是可以理解/可接受的。這比我預期的工作更加絕望。
所以,我試了幾個小時,但我無法讀取該文件。
對於第二種情況(外部settings.json
)我已經試過這樣:
// inside js/main.js
var fs, s1, s2, s3;
fs = require("fs");
s1 = fs.readFileSync("settings.json");
s2 = require("settings.json");
s3 = require("settings");
對於s1
我得到:
"" (empty string)
爲s2
:
Error: Cannot find module 'settings'
對於s3
:
Error: Cannot find module 'settings.json'
看起來我無法打開該文件。我也嘗試改變目錄之前啓動nw
,但無濟於事。
我用盡了所有路徑,選項,嘗試和手冊/教程/ SO問題。在這兩種不同的情況下,我做錯了什麼?
我已經重寫了一個乾淨的測試用例,但問題是完全一樣的。我省略fs
node_modules
,與npm一起安裝。
這是來自另一個例子的問題。
的package.json
含量:
index.html
{
"name": "test",
"main": "index.html",
"window": {
"toolbar": false,
"width": 800,
"height": 480
}
}
:
含量<!DOCTYPE html>
<html>
<head>
<script src="main.js"></script>
</head>
<body>
</body>
</html>
main.js
:
test.html
"use strict";
window.onload = function() {
var fs, html;
fs = require("fs");
try {
html = fs.readFileSync("./test.html");
console.log(html); // empty string
} catch(ex) {
console.log(ex.message); // unreached
}
try {
html = require("./test.html");
console.log(html); // unreached
} catch(ex) {
console.log(ex.message); // error
}
};
:
<div id="widget_message">
@message
</div>
根據文檔,當且僅當指定了第二個參數encoding時,fs.readFileSync()才返回一個字符串。否則它會返回一個緩衝區。你嘗試過'fs.readFileSync(「settings.json」,「utf8」);'? – Flawyte
這就是我錯過的!謝謝。如果你在答覆中回覆,我會接受。 – pid