操作系统: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了解更多信息。