使用 Next/Now 部署 WebApp

使用 Next/Now 部署 WebApp

操作系统:Debian 9 (延伸)

已保存的全局 npm 安装:

使用 Next 框架构建静态 web 应用程序,npm run dev在 localhost:3000 中使用 package.json 可以正常运行:

"scripts": {
    "dev": "next",
    "build": "next build",
    "start": "next start"

当单独构建部署时,npm run build会发生以下情况:

> Failed to build { Error: (client) ./pages/index.js Module not found: Error: Can't resolve 'react' in 'path/to/pages' (......) }
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! [email protected] build: `next build`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the [email protected] build script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /home/jp/.npm/_logs/2019-01-19T13_55_25_781Z-debug.log

昨天我设法构建了它,通过重新安装所有技术栈并向我的用户授予 su 权限(解决方案今天又不起作用了……)。但是当使用部署时now,不知何故 index.js 的路径出现了问题,因为 urlnow访问找不到“./pages/index.js”,并且重定向时它会以纯文本显示 index.js 而不是呈现代码。

也许是 SSR?我正试着理解这一切……

相同的项目是在 macOsX 中构建的,并且现在也已部署,并且一切运行良好。

那么,到底是怎么回事呢?

安装并重新安装了所有库和主要技术。所有东西都在用户权限下,并具有适当的权限。在新位置从零开始重新创建一切。研究了 Next 和 Now 的文档,只要 React 的...

我最接近解决反应模块的方法是 https://webpack.js.org/configuration/resolve/,但没有

module.exports = {
  //...
  resolve: {
    module: ['react']
  }
};

或类似的东西。

经过所有的故障排除后,我的逻辑是:

1 代码很好,在其他站上编译并顺利运行;

2 可能和我在Debian/Linux中的编译有关;

无法继续了。如能提供任何帮助,非常感谢。

答案1

那么...24天后...

答案在现在的文档中(隐藏得很好),如下所示:

“但是,如果您定义构建步骤,现在将仅包含构建者在最终部署中生成的输出。”

因此,如果我定义一个如下的构建器:https://zeit.co/docs/v2/deployments/official-builders/next-js-now-next/

它真的有效!

有一些构建器可供您选择喜欢的框架使用,就我而言是 Now/Next。

解决方案:创建了 2 个文件:

next.config.js

module.exports = {
target: 'serverless'
}

现在.json

{
"version": 2,
"builds": [{ "src": "next.config.js", "use": "@now/next" }]
} 

查看https://zeit.co/docs/v2/deployments/builds/#sources-and-outputs了解更多信息。

相关内容