Cap*_*irk 6 heroku node.js nextjs
在问这个问题之前,我看了以下问题,但是我认为我是不同的,因为我没有使用Docker:Nextjs无法在生产node_env的'.next'目录中找到有效的版本。
我也试过这个去掉“接下来”文件夹,但是仍然得到同样的问题的方法。
解决了许多其他问题之后,我只能解决一个似乎无法解决的问题。当我尝试部署到Heroku时,不断出现以下错误:
node server.js
Could not find a valid build in the '.next' directory! Try building your app with 'next build' before starting the server.
Run Code Online (Sandbox Code Playgroud)
这是我的package.json文件:
{
"name": "StarterApp",
"version": "1.0.0",
"engines": {
"node": "10.4.1"
},
"description": "",
"main": "index.js",
"scripts": {
"test": "mocha",
"dev": "node server.js"
},
"author": "",
"license": "ISC",
"dependencies": {
"express": "4.16.3",
"fs-extra": "^5.0.0",
"ganache-cli": "^6.1.3",
"mocha": "^5.2.0",
"next": "^4.2.3",
"next-routes": "^1.4.2",
"node-gyp": "^3.7.0",
"react": "^16.4.1",
"react-dom": "^16.4.1",
"rebuild": "^0.1.2",
"semantic-ui-css": "^2.3.2",
"semantic-ui-react": "^0.79.1",
"sha3": "^1.2.2",
"solc": "^0.4.24",
"truffle-hdwallet-provider": "0.0.3",
"web3": "^1.0.0-beta.34"
}
}
Run Code Online (Sandbox Code Playgroud)
Server.js文件:
const { createServer } = require('http');
const next = require('next');
const app = next({
dev: process.env.NODE_ENV !== 'production'
});
const routes = require('./routes');
const handler = routes.getRequestHandler(app);
app.prepare().then(() => {
createServer(handler).listen(5000, (err) => {
if (err) throw err;
console.log('Ready on localhost:5000');
});
});
Run Code Online (Sandbox Code Playgroud)
该应用程序在本地部署时没有问题,但是在部署到Heroku时出现此错误。我究竟做错了什么?
Mah*_*tap 34
npm run build
Run Code Online (Sandbox Code Playgroud)
然后
npm run start
Run Code Online (Sandbox Code Playgroud)
解决了我的问题。
仔细看看错误:
Error: Could not find a production build in the 'E:\Developer's Area\weatherteller\.next' directory. Try building your app with 'next build' before s at Server.readBuildId (E:\Developer's Area\weatherteller\node_modules\next\dist\next-server\server\next-server.js:146:355)
at new Server (E:\Developer's Area\weatherteller\node_modules\next\dist\next-server\server\next-server.js:3:120)
at createServer (E:\Developer's Area\weatherteller\node_modules\next\dist\server\next.js:2:638)
at start (E:\Developer's Area\weatherteller\node_modules\next\dist\server\lib\start-server.js:1:323)
at nextStart (E:\Developer's Area\weatherteller\node_modules\next\dist\cli\next-start.js:19:125)
at E:\Developer's Area\weatherteller\node_modules\next\dist\bin\next:27:115
Run Code Online (Sandbox Code Playgroud)
在跑步的时候
npm start
Run Code Online (Sandbox Code Playgroud)
它无法找到启动下一个应用程序所需的生产版本。在创建下一个应用程序时使用
npm install next react react-dom --save
Run Code Online (Sandbox Code Playgroud)
未创建 .next 文件夹,因此您需要先使用以下命令创建 .next 文件夹
npm build
Run Code Online (Sandbox Code Playgroud)
它将包含您的所有生产构建文件。
npm build 之后,将创建文件夹,您可以使用以下命令运行您的应用程序
npm start
Run Code Online (Sandbox Code Playgroud)
另外,请确保这些脚本位于您的下一个应用程序中
"scripts": {
"dev": "next",
"build": "next build",
"start": "next start"
},
Run Code Online (Sandbox Code Playgroud)
希望这能解决您的错误
小智 5
第一的
npm run-script build
Run Code Online (Sandbox Code Playgroud)
然后
npm run start
Run Code Online (Sandbox Code Playgroud)
NextJS 的构建可能非常大(取决于您的项目规模),这可能会在部署过程中花费您的金钱。您可以将以下内容应用到您的package.json
{
"script": {
"build": "next build",
"heroku-postbuild": "npm run build",
"start": "next start"
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2781 次 |
最近记录: |