javascript - 如何创建 Express api 可执行文件

标签 javascript node.js express multer

我已经创建了一个功能齐全、相当基本的 javaScript Node.js Express API 应用程序,我希望将其作为 Windows 环境中的可执行文件运行。我想这样做,这样我就可以让客户能够在本地运行我的 API,而无需向他们公开我的源代码。

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

我的可执行文件运行,但我的 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 的可执行文件,以更好地处理我遇到的问题?

任何指导都会很棒。

最佳答案

尝试将您的文件添加到 package.json 文件中的“assets”下。

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

So you must specify the files - scripts and assets - manually in pkg property of your package.json file.

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

You may also specify arrays of globs:

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

Just be sure to call pkg package.json or pkg . to make use of scripts and assets entries.

关于javascript - 如何创建 Express api 可执行文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55267639/

相关文章:

javascript - 在浏览器中使用浏览器化的 NodeJS 文件

node.js - node js是否容易受到时间漂移的影响?

node.js - 使用 body-parser 进行中间件解析的顺序

javascript - jQuery:隐藏带有日期对象的div

javascript - 运行 jQuery 的正确位置

node.js - NPM 依赖于计算机的操作系统吗?

javascript - 在 Nodejs 中将 greenlock-express 与 Express 结合使用

javascript - Node.js 中的文件路径

javascript - 为什么很多程序员将逗号移到下一行?

javascript - 尝试加载一个模型,该模型包含模式中的 2 个不同对象列表