我如何部署我的网站到Heroku不包括.env文件?



大家好,我是一个新手,在网上部署网站对我来说是很新的。每次我在cmd行客户端执行heroku push时,我都会得到错误消息:错误:无法找到模块'./../。env。">

我有一个.env文件,其中包含我的mongoDB连接字符串和一个密钥。我不想把它推送到远程服务器。所以我把它包含在git中。忽略文件。我认为这就是造成问题的原因。它说它找不到。env文件,我假设这是因为它不在git远程。但是,我如何部署网站,而不必推出我的。env文件的信息,我不想向公众??我不想把它推到git才使它工作,因为那样就违背了目的。

在创建.env文件之前,我有一个带有模块的配置文件。Exports对象,其中包含连接字符串和密钥。但这不起作用,我一直得到相同的错误,当时。config模块没有找到。所以我上网看了看教程,上面说如果我安装dotenv包并使用。env文件,那么应该可以工作。但我得到完全相同的错误只是与。env文件,而不是。所以我看不出有什么区别。

这里是index.js文件和包。json文件。env文件中唯一的东西是我的数据库连接字符串和我的密钥。

index.js文件'


const dotenv = require("dotenv");
dotenv.config({ path: "./.env" });
const { ApolloServer, PubSub } = require("apollo-server");
const mongoose = require("mongoose");
const typeDefs = require("./graphql/typeDefs");
const resolvers = require("./graphql/resolvers");
const pubsub = require("graphql-subscriptions");
const PORT = process.env.port || 5000;
const server = new ApolloServer({
typeDefs,
resolvers,
context: ({ req }) => ({ req, pubsub }),
});
mongoose
.connect(process.env.MONGODB_URI, { useNewUrlParser: true })
.then(() => {
console.log("MongoDB Connected");
return server.listen({ port: PORT });
})
.then((res) => {
console.log(`Server running at ${res.url}`);
})
.catch((err) => {
console.error(err);
});

包。json文件'


{
"name": "social-media-app",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"serve": "node index",
"start": "node index"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"apollo-server": "^3.10.2",
"bcryptjs": "^2.4.3",
"dotenv": "^16.0.3",
"graphql": "^16.6.0",
"graphql-subscriptions": "^2.0.0",
"jsonwebtoken": "^8.5.1",
"mongoose": "^6.6.4",
"react": "^18.2.0",
"react-dom": "^18.2.0"
}

}

这是当我推它时,我一直在客户端得到的错误消息。我把它放在糊盒里,因为它很长。

https://pastebin.com/DC0q27aA

进入设置选项卡。在配置变量中,单击Reveal Config Vars并键入您的变量

Heroku建议使用config vars函数,而不要将。env或其他东西保存到文件中。

如果您将配置保存为文件,请小心,因为机密信息可能会在公共存储库中泄露。

请参阅Heroku的文章:https://devcenter.heroku.com/articles/config-vars

相关内容

  • 没有找到相关文章

最新更新