emcc -o m.js -std=c++11 --bind main.cpp
[root@webserver CppCallback]# node m.js
/root/frontend/WebAssembly/LearnWebassembly20190319/code/CppCallback/m.js:508
Module['monitorRunDependencies']?.(runDependencies);
^
SyntaxError: Unexpected token .
at Module._compile (internal/modules/cjs/loader.js:723:23)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
at Module.load (internal/modules/cjs/loader.js:653:32)
at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
at Function.Module._load (internal/modules/cjs/loader.js:585:3)
at Function.Module.runMain (internal/modules/cjs/loader.js:831:12)
at startup (internal/bootstrap/node.js:283:19)
at bootstrapNodeJSCore (internal/bootstrap/node.js:623:3)
webassembly运行出错的问题
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
关注 引自免费微信小程序:皆我百晓生
看起来你在尝试编译并运行一个使用Emscripten(emcc)编译的C++程序,并通过Node.js加载生成的JavaScript文件。错误信息表明在加载
m.js
时遇到了语法错误,这通常是因为生成的JavaScript代码不兼容Node.js环境。这个错误是由于WebAssembly模块API在某些版本的Node.js中未被正确处理。为了解决这个问题,你需要更新Node.js到最新版本,或者使用Emscripten的
--shell-file
选项来创建一个更稳定的入口点,以便与旧版Node.js兼容。首先,确保你的Node.js是最新的。你可以通过运行下面的命令检查当前版本:
node -v
如果你的Node.js不是最新的,你可以从Node.js官方网站下载并安装最新版本。
如果你已经使用了最新版本的Node.js,但仍然遇到问题,可以尝试使用
--shell-file
选项。这是一个稳定的Node.js壳文件,可以解决与新特性相关的兼容性问题。在编译时添加此选项:emcc -o m.js -std=c++11 --bind --shell-file=node_loader.js main.cpp
这里我们使用了一个名为
node_loader.js
的稳定壳文件。如果你没有这个文件,可以从Emscripten的GitHub仓库复制它。克隆仓库:git clone https://github.com/emscripten-core/emscripten.git
然后将
emscripten/tools/js PropertyInfo.js
重命名为node_loader.js
。接下来,按照上面的命令重新编译你的代码。完成这些步骤后,你应该可以在Node.js环境中成功运行生成的JavaScript文件。再次执行:
node m.js
这样应该能解决你遇到的语法错误。如果还有其他问题,可能需要查看Emscripten的官方文档或社区支持来获取进一步的帮助。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥50 高维数据处理方法求指导
- ¥100 数字取证课程 关于FAT文件系统的操作
- ¥15 如何使用js实现打印时每页设置统一的标题
- ¥15 安装TIA PortalV15.1报错
- ¥15 能把水桶搬到饮水机的机械设计
- ¥15 Android Studio中如何把H5逻辑放在Assets 文件夹中以实现将h5代码打包为apk
- ¥15 使用小程序wx.createWebAudioContext()开发节拍器
- ¥15 关于#爬虫#的问题:请问HMDB代谢物爬虫的那个工具可以提供一下吗
- ¥15 vue3+electron打包获取本地视频属性,文件夹里面有ffprobe.exe 文件还会报错这是什么原因呢?
- ¥20 用51单片机控制急停。