Javascript 如何在命令行上将文件名传递给emscripten编译的节点脚本?
在使用emscripten编译的C程序中打开用户指定的文件时遇到问题(正在通过节点运行)。以这个简单的Javascript 如何在命令行上将文件名传递给emscripten编译的节点脚本?,javascript,emscripten,Javascript,Emscripten,在使用emscripten编译的C程序中打开用户指定的文件时遇到问题(正在通过节点运行)。以这个简单的cat类程序为例: #include <stdio.h> #define BUFSIZE 100 int main( int argc, char *argv[] ) { char *filename; FILE *file; char buf[BUFSIZE]; if (argc != 2) { fprintf (stderr, "Usage: %s
cat
类程序为例:
#include <stdio.h>
#define BUFSIZE 100
int main( int argc, char *argv[] )
{
char *filename;
FILE *file;
char buf[BUFSIZE];
if (argc != 2) {
fprintf (stderr, "Usage: %s <filename>\n", argv[0]);
return 1;
}
file = fopen (argv[1], "r");
while (fgets (buf, BUFSIZE, file))
fputs (buf, stdout);
fclose (file);
return 0;
}
它运行并需要一个参数:
% node a.out.js
Usage: /bin/this.program <filename>
最后我想在浏览器环境中加载文件。。。我知道这是一个完全不同的球赛,文件预加载等。。。。现在我只想让命令行工作
更新为添加:查看后,我尝试预加载文件,但出现了另一个错误:
% /usr/local/src/emscripten/emcc mycat.c --preload-file somefile
...
% node a.out.js somefile
node.js:201
throw e; // process.nextTick error, or 'error' event on first tick
^
ReferenceError: XMLHttpRequest is not defined
at...
这是否意味着我需要在浏览器中运行它
再次更新以添加:
% /usr/local/src/emscripten/emcc mycat.c -o mycat.html --preload-file README.md
clang: warning: argument unused during compilation: '-nostdinc++'
% open mycat.html
浏览器窗口显示“准备…”,控制台日志显示错误:
XMLHttpRequest cannot load file://localhost/path/to/mycat.data. Cross origin requests are only supported for HTTP. mycat.html:1
Uncaught Error: NETWORK_ERR: XMLHttpRequest Exception 101 mycat.html:2816
still waiting on run dependencies: mycat.html:61
dependency: fp somefile mycat.html:61
dependency: datafile_mycat.data mycat.html:61
(end of list)
…然后,从“仍在等待运行依赖项:mycat.htm”开始的最后四行每隔几秒钟重复一次
不知何故,我需要在javascript端用FS准备这些文件系统调用吗?。错误跨源请求仅支持HTTP,这意味着您的浏览器不允许直接从硬盘加载网页 有些浏览器支持命令行参数来启用此功能,但我强烈建议您只需在简单的HTTP服务器上运行web页面。使用Python很容易做到这一点:
python-msimplehttpserver
http://127.0.0.1:8000
% clang --version
clang version 3.2 (tags/RELEASE_32/final)
...
% node --version
v0.6.15
% python --version
Python 2.7.1
% /usr/local/src/emscripten/emcc --version
emcc (Emscripten GCC-like replacement) 1.3.6 (commit 17da251d334ce62d633d51f874b92e19ad9dbf45)
...
% /usr/local/src/emscripten/emcc mycat.c --preload-file somefile
...
% node a.out.js somefile
node.js:201
throw e; // process.nextTick error, or 'error' event on first tick
^
ReferenceError: XMLHttpRequest is not defined
at...
% /usr/local/src/emscripten/emcc mycat.c -o mycat.html --preload-file README.md
clang: warning: argument unused during compilation: '-nostdinc++'
% open mycat.html
XMLHttpRequest cannot load file://localhost/path/to/mycat.data. Cross origin requests are only supported for HTTP. mycat.html:1
Uncaught Error: NETWORK_ERR: XMLHttpRequest Exception 101 mycat.html:2816
still waiting on run dependencies: mycat.html:61
dependency: fp somefile mycat.html:61
dependency: datafile_mycat.data mycat.html:61
(end of list)