2

我正在尝试使用zeit/pkg基于此处的示例构建一个小型 NextJS 示例应用程序的可执行文件。问题是唯一可行的入口点(server.js)似乎给了我一堆错误,目前没有在他们与 webpack 编译相关的问题中列出。

如果您想复制,只需按照此处的说明进行操作,然后添加 pkg。另外 - 这是下面的错误输出。

错误无法编译,出现 2 个错误
10:48:35 AM 未找到这些依赖项:

  • @babel/runtime/helpers/在 D:/snapshot/pkg-ssr/node_modules/next/dist/lib/app.js 中扩展
  • webpack-hot-middleware/client?autoConnect=false&overlay=false&reload=true 在 D:/snapshot/pkg-ssr/node_modules/next/dist/client/webpack-hot-middleware-client.js

要安装它们,你可以运行: npm install --save @babel/runtime/helpers/extends webpack-hot-middleware/client?autoConnect=false&overlay=false&reload=true (node:15964) DeprecationWarning: Module.chunks: Use Module。 forEachChunk/mapChunks/getNumberOfChunks/isInChunk/addChunk/removeChunk

准备好http://localhost:3000客户端 ping,但页面没有条目:/about { 错误:在 Function.Module._resolveFilename (internal/modules/cjs/loader. js:592:15) 在 Function.Module._resolveFilename (pkg/prelude/bootstrap.js:1278:46) 在 Function.Module._load (internal/modules/cjs/loader.js:518:25) 在 Module.require (internal/modules/cjs/loader.js:648:17) 在 Module.require (pkg/prelude/bootstrap.js:1157:31) 在 require (internal/modules/cjs/helpers.js:20:18) 在_callee3$ (D:\snapshot\pkg-ssr\node_modules\next\dist\server\render.js:202:29) 在 tryCatch (D:\snapshot\pkg-ssr\node_modules\regenerator-runtime\runtime.js: 62:40) 在 Generator.invoke [as _invoke] (D:\snapshot\pkg-ssr\node_modules\regenerator-runtime\runtime.js:296:22) 在 Generator.forEach.prototype.(anonymous function) [as next] (D:\snapshot\pkg-ssr\node_modules\regenerator-runtime\runtime.js:114:21) 在步骤 (D:\snapshot \pkg-ssr\node_modules\@babel\runtime\helpers\asyncToGenerator.js:12:30) 在 _next (D:\snapshot\pkg-ssr\node_modules\@babel\runtime\helpers\asyncToGenerator.js:27:9 ) 在 process._tickCallback (internal/process/next_tick.js:68:7) 代码:'MODULE_NOT_FOUND'} 客户端 ping,但页面没有条目:/about { 错误:找不到模块 'D:_experiments\pkg-ssr .next\build-manifest.json' 在 Function.Module._resolveFilename (internal/modules/cjs/loader.js:592:15) 在 Function.Module._resolveFilename (pkg/prelude/bootstrap.js:1278:46) 在模块中的 Function.Module._load (internal/modules/cjs/loader.js:518:25)。需要 (internal/modules/cjs/loader.js:648:17) 在 Module.require (pkg/prelude/bootstrap.js:1157:31) 在 require (internal/modules/cjs/helpers.js:20:18)在 _callee3$ (D:\snapshot\pkg-ssr\node_modules\next\dist\server\render.js:202:29) 在 tryCatch (D:\snapshot\pkg-ssr\node_modules\regenerator-runtime\runtime.js :62:40) 在 Generator.invoke [as _invoke] (D:\snapshot\pkg-ssr\node_modules\regenerator-runtime\runtime.js:296:22) 在 Generator.forEach.prototype.(匿名函数) [as下一步] (D:\snapshot\pkg-ssr\node_modules\regenerator-runtime\runtime.js:114:21) 在步骤 (D:\snapshot\pkg-ssr\node_modules\@babel\runtime\helpers\asyncToGenerator.js :12:30) 在 _next (D:\snapshot\pkg-ssr\node_modules\@babel\runtime\helpers\asyncToGenerator.js:27:9) 在进程中。_tickCallback (internal/process/next_tick.js:68:7) 代码:'MODULE_NOT_FOUND' }

4

1 回答 1

3

就我而言,问题在于我没有打包构建的应用程序。我需要做几件事:

  • 在下面指定assetsand (请注意,在我的情况下, dist实际上是服务器,因为我有一个自定义服务器和中间件)scriptspackage.json

    "pkg": { "assets": [ ".next/**/*" ], "scripts": [ ".next/dist/**/*.js" ] },

  • 首先使用构建应用程序next build
  • 然后确保无论我以哪种方式构建包,我都使用了package.json. 对我来说,最好的命令是他们的默认示例pkg .

如果您想要一个 repo 和说明进行比较,请参阅 Mike Hsu 的以下文章:https ://medium.com/@evenchange4/deploy-a-commercial-next-js-application-with-pkg-and-docker- 5c73d4af2ee

于 2018-09-04T12:52:50.353 回答