My node.js web app don';我不认识manifest.json

My node.js web app don';我不认识manifest.json,node.js,express,handlebars.js,progressive-web-apps,manifest.json,Node.js,Express,Handlebars.js,Progressive Web Apps,Manifest.json,我正在用node.js、express.js和handlebar构建一个web应用程序。我让web应用程序正常工作,现在我想将其转换为PWA,因此我编写了manifest.json,如下所示: { "name": "Talleres Online", "short_name": "Talleres Online", "start_url": "./?utm_source=web_app_manifest", "display": "standalone",

我正在用node.js、express.js和handlebar构建一个web应用程序。我让web应用程序正常工作,现在我想将其转换为PWA,因此我编写了manifest.json,如下所示:

{
    "name": "Talleres Online",
    "short_name": "Talleres Online",
    "start_url": "./?utm_source=web_app_manifest",
    "display": "standalone",
    "background_color": "#44d1c8",
    "theme_color": "#55bddc",
    "orientation": "portrait",
    "description": "Lleva el control de tu taller a donde vayas, con Talleres Online puedes gestionar el funcionamiento de tu taller mecánico ¡desde cualquier dispositivo!",
    "lang": "es-MX",
    "icons": [{
      "src": "icons/icon-32x32.png",
        "sizes": "32x32",
        "type": "image/png"
      }, {
      "src": "icons/icon-64x64.png",
        "sizes": "64x64",
        "type": "image/png"
      }, {
      "src": "icons/icon-128x128.png",
        "sizes": "128x128",
        "type": "image/png"
      }, {
        "src": "icons/icon-144x144.png",
        "sizes": "144x144",
        "type": "image/png"
      }, {
        "src": "icons/icon-152x152.png",
        "sizes": "152x152",
        "type": "image/png"
      }, {
        "src": "icons/icon-192x192.png",
        "sizes": "192x192",
        "type": "image/png"
      }, {
        "src": "icons/icon-256x256.png",
        "sizes": "256x256",
        "type": "image/png"
      }, {
        "src": "icons/icon-512x512.png",
        "sizes": "512x512",
        "type": "image/png"
      }, {
        "src": "icons/icon-1024x1024.png",
        "sizes": "1024x1024",
        "type": "image/png"
      }]
  }
当我试图在devtools上查找清单信息时,似乎没有manifest.json,在控制台上,它会显示以下错误:

未能加载资源:服务器响应的状态为404(未找到)清单。json:1

清单:行:1,列:1,语法错误。json:1

获取404(未找到)清单。json:1

清单:行:1,列:1,语法错误

对于Handlebar,我有一个main.hbs文件,其中包含HTML的head标记,body标记引用其他.hbs文件来构建站点,在这个main.hbs文件中,我放置了引用manifest.json的meta标记

我已经将manifest.json放在应用程序的根目录中(就在node_modules文件夹的一侧)、/src文件夹和/public文件夹中,但它们都不起作用,我还将/manifest.json请求的路由连接到manifest.json文件,但它只是将错误从404改为500

需要帮忙吗? 非常感谢你,很抱歉发了这么长的帖子和糟糕的英语


const express = require('express');
const morgan = require('morgan');
const exphbs = require('express-handlebars');
const path = require('path');
const flash = require('connect-flash');
const session = require('express-session');
const MySqlStore = require('express-mysql-session');
const passport = require('passport');

const { database } = require('./keys');

//Inicializaciones

const app = express();
require('./lib/passport');

//Configuraciones

app.set('port', process.env.PORT || 3000);
app.set('views', path.join(__dirname, 'views'));
app.engine('.hbs', exphbs({
    defaultLayout: 'main',
    layoutsDir: path.join(app.get('views'), 'layouts'),
    partialsDir: path.join(app.get('views'), 'partials'),
    extname: '.hbs',
    helpers: require('./lib/handlebars')
}));
app.set('view engine', '.hbs');

//Middlewares

app.use(session({
    secret: 'carhelpmysqlsession',
    resave: 'false',
    saveUninitialized: 'false',
    store: new MySqlStore(database)
}));
app.use(flash());
app.use(morgan('dev'));
app.use(express.urlencoded({extends: false}));
app.use(express.json());
app.use(passport.initialize());
app.use(passport.session());

//Variables Globales

app.use((req, res, next) => {
    app.locals.success = req.flash('success');  
    app.locals.message = req.flash('message');
    app.locals.user = req.user; 
    next();
});

//Rutas

app.use(require('./routes/index.js'));
app.use(require('./routes/authentication.js'));
app.use(require('./routes/carhelp.js'));
app.use(require('./routes/estados.js'));



// Public
app.use(express.static(path.join(__dirname, 'public')));

//Inicializar Servidor

app.listen(app.get('port'), () => {
    console.log('Server on port', app.get('port'));
});


这个问题已经解决了,但是如果其他人有相同的问题,我可以很容易地解决它,这里是我的快速配置

所以它说
语法错误

我想看看你的清单json文件,它的格式是否正确。在代码段中,我看到一个缺少的
{
开始括号,在复制时可能会出现问题。您可以尝试类似JSON验证程序的方法,也可以使用它来验证清单文件

如果一切正常,则可以清除浏览器缓存

希望这对你有帮助

更新:
manifest.json
应该在
static/public
文件夹中,从该文件夹中提供静态文件并将其用作express中的静态文件。

您是如何告诉node使用公用文件夹的?谢谢,但是在这里复制文件是一个错误,我通过JSONLint传递了它,并说一切正常,但错误仍然存在e:(你把manifest.json文件放在哪里了,它应该在静态/公共文件夹中,从那里你正在提供静态文件,并在express中将其用作静态文件。你能用文件夹结构、express静态代码和标记更新帖子吗?你正在使用manifest.jsonSolved!谢谢,我没有注意到expre是如何提供静态文件的。)ss配置,因此我将manifest.json放在根目录(例如,除了节点_模块)和“视图”中使用剩余的车把文件,检查此文件,向我展示如何将其放置在正确的位置,非常感谢!真的!也感谢@zipzit。太棒了,很高兴提供帮助。更新了答案。如果您能将此标记为正确答案,以便有人来回答此问题并快速找到答案,那就太好了。谢谢。