【问题标题】:How to create an express api executable如何创建一个 express api 可执行文件
【发布时间】:2019-03-20 18:16:53
【问题描述】:

我创建了一个功能齐全的相当基本的 javaScript Node.js Express API 应用程序,我想在 Windows 环境中作为可执行文件运行它。我想这样做是为了让客户能够在本地运行我的 API,而不会将我的源代码暴露给他们。

目前我一直在使用pkg npm package,它允许我将我的 node.js 应用程序打包成一个可执行文件,该可执行文件将包含运行该应用程序所需的所有内容,包括节点和我的捆绑源代码。

我的可执行文件运行但我的 POST 路由因以下错误而中断:

    "name": "RequestError",
    "message": "Error: form-data: File or directory 'C:\\**\\myapp-api\\uploads\\1553103249524_test.wav' was not included into executable at compilation stage. Please recompile adding it as asset or script.",
    "cause": {
        "errno": -4058,
        "code": "ENOENT",
        "path": "C:\\snapshot\\myapp-api\\uploads\\test.wav",
        "pkg": true
    },
    "error": {
        "errno": -4058,
        "code": "ENOENT",
        "path": "C:\\snapshot\\myapp-api\\uploads\\1553103249524_test.wav",
        "pkg": true
    },

My POST 允许客户端使用multer.js 以多部分形式将文件上传到另一个将返回一些元数据的外部 API。 pkg.js 似乎无法发现捆绑可执行文件后包含的文件。

我可以在我的配置中做些什么来包含我上传的文件吗?是否有其他实用程序或进程可供其他人用于创建他们的 node.js express API 的可执行文件,以更好地处理我遇到的问题?

任何指导都会很棒。

【问题讨论】:

    标签: javascript node.js express multer


    【解决方案1】:

    尝试在 package.json 文件的“资产”下添加您的文件。

    pkg 网站https://www.npmjs.com/package/pkg#config 上的配置段落指出:

    因此,您必须在 package.json 文件的 pkg 属性中手动指定文件 - 脚本和资产。

    "pkg": {
        "scripts": "build/**/*.js",
        "assets": "views/**/*"
    }
    

    您还可以指定 glob 数组:

    "assets": [ "assets/**/*", "images/**/*" ]
    

    请务必调用 pkg package.json 或 pkg 。使用脚本和资产条目。

    【讨论】:

    • 所以我的项目没有assets/..scripts/.. 文件夹。我曾尝试使用类似"pkg": { "uploads/**/*} 的东西,对吗?使用这个我仍然遇到同样的问题。
    【解决方案2】:

    你可能在你的脚本中使用了类似的东西(我猜是因为你没有提供这部分代码)

    app.use(express.static(__dirname+'/uploads'));
    res.sendFile(path.join(__dirname+'/uploads'));
    

    当你打包你的 .exe 时,__dirname 将是错误的,在任何地方摆脱它并用 ./ 替换它

    app.use(express.static('./uploads'));
    
    res.sendFile(path.join('./uploads'));
    

    类似的东西。它对我有用。

    祝你好运!

    【讨论】:

      猜你喜欢
      • 2014-07-03
      • 1970-01-01
      • 1970-01-01
      • 2020-03-12
      • 2011-10-22
      • 1970-01-01
      • 1970-01-01
      • 2011-07-14
      • 1970-01-01
      相关资源
      最近更新 更多