- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
对于这个令人困惑的标题,我深表歉意,但我对此感到非常困惑,我认为这与 Express 提供静态文件的方式有关,但不能确定。
我正在创建一个由 Express 静态提供服务的简单 Vue 应用。
server/app.js (入口点)
import express from "express";
import morgan from "morgan";
import path from "path";
import bodyParser from "body-parser";
const app = express();
// Sends static files from the public path directory
app.use(express.static(path.join(__dirname, "..", "public")));
// Use morgan to log request in dev mode
app.use(morgan('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({
extended: true,
}));
app.listen(process.env.PORT || 3000, () => {
console.log(`Listening on port: ${process.env.PORT}`);
});
// Server index.html page when request to the root is made
app.get('/', (req, res, next) => {
res.sendFile("index.html", {
root: path.join(__dirname, "..", "public"),
});
});
index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<title>Hello World</title>
</head>
<body>
<div id="app"></div>
</body>
</html>
public/main.js
import Vue from "vue";
import BootstrapVue from "bootstrap-vue";
import "bootstrap/dist/css/bootstrap.min.css";
import "bootstrap-vue/dist/bootstrap-vue.css";
import App from "./App";
Vue.use(BootstrapVue);
Vue.config.productionTip = false;
/* eslint-disable no-new */
new Vue({
el: "#app",
components: { App },
template: "<App/>",
});
public/App.vue
<template>
Hello World!
</template>
<script>
export default {
name: "App",
};
</script>
<style>
#app {}
</style>
App.vue 和 main.js 只有在我取消注释该静态服务行时才会加载。
这只是一个简单的UI页面,没有什么奢侈的。在 Chrome 中,我得到一个空白页面,标签上只有标题“Hello World”。我也无法打开 DevTools,而且我的 Chrome 扩展无法识别 Vue 在页面上运行
在 Mozilla 中,结果与 Chrome 相同,但可以看到 DevTools,它只是基本的 HTML 并且没有其他文件的迹象(即使我在 public
中提供文件)正在加载.此处的日志中也没有错误。
服务器日志中没有错误。我曾经在访问根端点时在日志中获得响应,但由于某种原因,我现在不再是了。
我意识到这不是很多,但如果有人有任何初步想法,他们将不胜感激 :)
编辑
澄清一下,当我提供来自 public
的文件时目录,我可以在浏览器中点击它们,即 http://localhost:3000/App.vue
编辑 2
我添加了一个基本的 webpack.config
捆绑我的 Vue 和 JS 文件,但我得到了相同的行为。
webpack.config.js
const path = require("path");
const nodeExternals = require("webpack-node-externals");
const HtmlWebpackPlugin = require("html-webpack-plugin");
module.exports = {
entry: `${__dirname}/public/main.js`,
output: {
path: path.join(__dirname, "dist", "client"),
filename: "client.min.js",
},
target: "node",
resolve: {
extensions: [
".js",
".vue",
],
modules: [
"node_modules",
],
},
externals: [
nodeExternals(),
],
module: {
loaders: [
{
test: /\.vue$/,
loader: "vue-loader",
},
{
test: /\.js$/,
exclude: /node_modules/,
loader: "babel-loader",
query: {
presets: [
"es2015",
],
},
},
],
},
plugins: [
new HtmlWebpackPlugin({
filename: 'index.html',
template: 'index.html',
inject: true,
}),
],
};
在 Firefox 中查看 DevTools 时,<script>
包括 client.min.js
存在,但仍未显示任何内容。
最佳答案
您当前的项目结构需要像 Webpack 这样的打包器。正如评论中所提到的,这不是您可以简单地“稍后添加”的东西。
首先,单文件.vue
组件必须构建。浏览器不知道如何解释格式。此任务通常由 loader 完成(参见 https://github.com/vuejs/vue-loader )。
其次,浏览器通常不支持模块导入(虽然这正在改变)所以你需要一些东西来转换所有这些 import
将语句组合成可以在您的 HTML 页面中执行的脚本包。
我强烈建议您通过 vue-cli 工具启动您的项目。参见 https://github.com/vuejs/vue-cli .
您可以通过将 Vue 包含在您的 HTML 页面中来使用它,即
<script src="https://cdn.jsdelivr.net/npm/vue"></script>
但这将从根本上改变您的源代码的组织方式,您可能会发现无法使用某些第 3 方包含,除非它们也支持通用 <script>
标签使用。您需要使用 Vue.component()
创建组件(或类似的)语法。
关于javascript - Vue 组件不渲染 & DevTools 挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50165071/
我错过了什么,我已完成 的安装指南中要求的所有步骤 native 脚本 运行 tns doctor 给我以下输出... C:\abc\xyz>tns doctor √ Getting environm
尝试从 {addToCart(book)}}/>}> 传递数据至}> 问题: 购物车 ( render={()=> ) 收到 null,但没有收到我尝试发送的对象 已放置“console.log...
这是 _app.tsx 的外观: function MyApp({ Component, pageProps }: AppProps) { return } 我在构建项目时遇到了这个错误: Ty
我的 Laravel Vue 组件收到以下警告: [Vue warn]: Avoid mutating a prop directly since the value will be overwrit
根据这个example更详细this one我刚刚遇到了一件奇怪的事情...... 如果我使用方法作为 addTab(title,icon,component) 并且下一步想使用 setTabComp
目前我有一个捕获登录数据的表单,一个带有 TIWDBGrid 的表单,它应该返回与我从我的 mysql 数据库登录时创建的 user_id 关联的任何主机,以及一个共享数据模块。 下面是我的登录页面代
在我的react-native应用程序中,我目前有一个本地Android View (用java编写)正确渲染。当我尝试将我的react-native javascript 组件之一放入其中时,出现以
我为作业编写了简单的代码。我引用了文档和几个 youtube 视频教程系列。我的 react 代码是正确的我在运行代码时没有收到任何错误。但是这些 react-boostrap 元素没有渲染。此代码仅
几周前我刚刚开始使用 Flow,从一周前开始我就遇到了 Flow 错误,我不知道如何修复。 代码如下: // @flow import React, { Component } from "react
我想在同一个 View 中加载不同的 web2py 组件,但不是同时加载。我有 5 个 .load 文件,它们具有用于不同场景的表单字段,这些文件由 onchange 选择脚本动态调用。 web2py
关闭。这个问题是opinion-based .它目前不接受答案。 想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文回答问题. 6年前关闭。 Improve t
Blazor 有 InputNumber将输入限制为数字的组件。然而,这呈现了一个 firefox 不尊重(它允许任何文本)。 所以我尝试创建一个过滤输入的自定义组件: @inherits Inpu
我在学习 AngularDART 组件时编写了以下简单代码,但没有显示任何内容,任何人都可以帮助我知道我犯了什么错误: 我的 html 主文件:
我想在初始安装组件时或之后为 div 设置动画(淡入)。动画完成后,div 不应消失。我正在尝试使用 CSSTransition 组件并查看 reactcommunity.org 上的示例,但我根本无
我需要一个 JSF 组件来表示甘特图。是否有任何组件库(如 RichFaces)包含这样的组件? 最佳答案 JFreeChart有甘特图和PrimeFaces有一个图像组件,允许您动态地流式传输内容。
从软件工程的角度来看,组件、模块和子系统之间有什么区别? 提前致谢! 最佳答案 以下是 UML 2.5 的一些发现: 组件:该子句指定一组结构,可用于定义任意大小和复杂性的软件系统。特别是,它将组件指
我有使用非托管程序集(名为 unmanaged.dll)的托管应用程序(名为 managed.exe)。到目前为止,我们已经创建了 Interop.unmanaged.dll,managed.exe
我有一个跨多个应用程序复制的 DAL(我知道它的设计很糟糕,但现在忽略它),我想做的是这个...... 创建一个将通过所有桌面应用程序访问的 WCF DAL 组件。任何人都可以分享他们对关注的想法吗?
我有一个 ComboBox 的集合声明如下。 val cmbAll = for (i /** action here **/ } 所有这些都放在一个 TabbedPane 中。我想这不是问题。那么我
使用 VB6 创建一个 VB 应用程序。应用程序的一部分显示内部的闪存。 当我使用 printform它只是打印整个应用程序。我不知道如何单独打印闪光部分。任何帮助,将不胜感激!.. 谢谢。 最佳答案
我是一名优秀的程序员,十分优秀!