因此構建運行,但它顯然沒有使用正確的 package.json 檔案,因為它獲得的唯一依賴項是 npm。當我到達我部署的網站時,我收到來自 Heroku 的默認應用程式錯誤。這些是構建日志:
日志
這是我的檔案布局的樣子: Visual Studio
這是 server.js 檔案:
const express = require('express')
const mongoose = require('mongoose')
const PORT = process.env.PORT || 3000
const jwtAuth = require("./middleware/jwtAuth")
require("dotenv").config()
const cors = require('cors');
const authRoutes = require('./routes/auth')
const orderRoutes = require('./routes/order')
const axios = require('axios')
const corsOptions = {
origin: 'http://localhost:3000',
}
const app = express()
//this will convert the request into json, since node doesn't accept json by default
app.use(express.json());
//this will enable cors on localhost
app.use(cors(corsOptions));
app.use('/api/auth', authRoutes)
app.use('/portfolio', jwtAuth)
app.use('/api/order', orderRoutes)
app.get('/secret', jwtAuth, (req, res) => {
res.send('Secret Hello World!')
})
//fetch testing
app.use('/stock', jwtAuth, function(req, res, next) {
const apikey = "M7DSRJECMBCEEWGF";
const ticker = ['MSFT']
let completed = 0;
const results = [];
console.log(ticker);
for (let i = 0; i < ticker.length; i ) {
const oneTicker = ticker[i];
axios.get(
`https://www.alphavantage.co/query?function=TIME_SERIES_DAILY&symbol=${ticker}&apikey=${apikey}`
)
.then((response) => {
completed = 1;
results.push(response.data);
if (completed === ticker.length) {
//All ticker have finished their response
console.log("completed");
res.send({
success: true,
message: "Ticker info",
results,
});
}
console.log(ticker);
})
.catch((e) => {
console.error(e);
});
}
})
app.get('/auth', jwtAuth, (req, res) => {
res.status(200).send("Welcome home, cowboy")
})
app.get('/', (req, res) => {
res.send('Hello World!')
})
app.get('/secret', jwtAuth, (req, res) => {
res.send('Secret Hello World!')
})
app.get('*', (req, res) => {
res.send('This route does not exist')
})
mongoose
.connect(process.env.MONGODB_URI, {
useNewUrlParser: true,
useUnifiedTopology: true,
})
.then(() => {
app.listen(PORT, () => console.log(`Server started on PORT ${PORT}`))
})
.catch((err) => {
console.log(err)
process.exit(1)
})
Heeelp,我真的很想了解在 heroku 上部署是如何作業的!:)
uj5u.com熱心網友回復:
你已經mongoose在你的定義devDependencies,其根本在蛞蝓創建階段得到安裝,但在此之前的應用程式已經實際部署,這是他們得到洗掉記錄在這里。
默認情況下,Heroku 將安裝所有在 package.json 中列出的依賴項和 devDependencies 下的依賴項。
在運行安裝和構建步驟之后,Heroku 將在部署應用程式之前去除在 devDependencies 下宣告的包。
有了這些資訊,您可以選擇移動mongoose到dependencies——這可能是您想要的。
如果你想保留它devDependencies,你可以通過更新你的配置讓Heroku 將它們保留在內置的 slug 中。不過,我不推薦這樣做,除非您有充分的理由將其保留為開發依賴項。
heroku config:set NPM_CONFIG_PRODUCTION=false YARN_PRODUCTION=false
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/393773.html
上一篇:如何使用javaawt制作影片
