如何使用javascript通过nexe访问已编译.exe中的捆绑文件

问题描述

我已经用打字稿创建了一个小的CLI工具,并且已经实现了使用nexe来创建一个.exe的功能一个新的用例是写出一些捆绑在应用程序内的文件: 假设我的CLI工具为用户提供了空模板文件用户可以随后填写这些文件

示例命令为:myapp.exe --action export-templates --outdir path/to/some/dir

现在应该发生的是CLI工具会将其包含的模板文件导出到该位置。

我已经捆绑了文件,请参阅我的package.json的摘录:

"scripts": {
    "build": "npm run compile && nexe compiled/index.js --target windows-x64-10.16.0 --resource \"resources/**/*\""
  }

我尝试通过以下方式访问文件

const filebuffer = fs.readFileSync(path.join('__dirname',`/templates/mytemplate.doc`));

但是,我想到一个例外: Error: ENOENT: no such file or directory,open 'C:\Users\Tom\compiled\templates\mytemplate.doc'

有人可以告诉我如何使用fs正确访问捆绑的.exe中的文件吗?

解决方法

好的,太可惜了,我需要一个人找出来,文档确实不是很好...

在经历了2016年至2017年(主要是https://github.com/nexe/nexe/pull/93)的一些问题后,我认为解决方案将是使用buildToolsVersion。好吧,事实证明这可能曾经有用,但是肯定不再有用。在我的应用中添加nexeres时,将遇到require('nexeres')错误。

所以我再次搜索问题,最后在https://github.com/nexe/nexe/issues/291中找到了解决方案:只需将Error: Cannot find module 'nexeres'fs.readFile与相对路径一起使用。我的最终代码如下:

fs.readFileSync