在Nuxt中将Koa用于Shopify嵌入式应用-未导入/注入的CSS和插件

如何解决在Nuxt中将Koa用于Shopify嵌入式应用-未导入/注入的CSS和插件

我正在使用Koa将我的应用程序作为Shopify的嵌入式应用程序提供。我没有任何问题,因为我可以使用以下代码安装我的应用程序:

import 'isomorphic-fetch'
import Koa from 'koa'
import { Nuxt,Builder } from 'nuxt'
import dotenv from 'dotenv'
import shopifyAuth,{ verifyRequest } from '@shopify/koa-shopify-auth'

import session from 'koa-session'
import serve from 'koa-static-server'

dotenv.config()
const { SHOPIFY_API_SECRET_KEY,SHOPIFY_API_KEY } = process.env

async function start() {
  const server = new Koa()
  const port = process.env.PORT || 3000

  // Import and Set Nuxt.js options
  const config = require('../nuxt.config.js')
  config.dev = !(server.env === 'production')

  // Instantiate nuxt.js
  const nuxt = new Nuxt(config)

  // Build in development
  if (config.dev) {
    const builder = new Builder(nuxt)
    await builder.build().catch((e) => {
      console.error(e)
      process.exit(1)
    })
  } else {
    await nuxt.ready()
  }
  console.log(config)
  console.log(nuxt)

  server.use(session({ secure: true,sameSite: 'none' },server))
  server.keys = [SHOPIFY_API_SECRET_KEY]

  server.use(
    shopifyAuth({
      apiKey: SHOPIFY_API_KEY,secret: SHOPIFY_API_SECRET_KEY,scopes: ['read_products','write_orders,write_products'],afterAuth(ctx) {
        // eslint-disable-next-line no-unused-vars
        const { shop,accessToken } = ctx.session

        console.log('We did it!',accessToken)

        ctx.redirect('/')
      },})
  )

  server.use(verifyRequest())

  server.use((ctx) => {
    ctx.status = 200 // koa defaults to 404 when it sees that status is unset

    return new Promise((resolve,reject) => {
      ctx.res.on('close',resolve)
      ctx.res.on('finish',resolve)
      nuxt.render(ctx.req,ctx.res,(promise) => {
        // nuxt.render passes a rejected promise into callback on error.
        promise.then(resolve).catch(reject)
      })
    })
  })

  server.use(serve({ rootDir: '_nuxt' }))

  server.listen(port,() => {
    console.log(`> Ready on http://localhost:${port}`)
  })
}

start()

现在,问题是我的css文件和插件未导入/注入到我的应用程序中,这是我的nuxt配置:

import LodashModuleReplacementPlugin from 'lodash-webpack-plugin'
import config from './common.config'
const env = require('dotenv').config()

export default {
  mode: 'universal',target: 'static',telemetry: process.env.NUXT_TELEMETRY_DISABLED,env: {
    NUXT_TELEMETRY_DISABLED: process.env.NUXT_TELEMETRY_DISABLED,SHOPIFY_API_KEY: process.env.SHOPIFY_API_KEY,SHOPIFY_API_SECRET_KEY: process.env.SHOPIFY_API_SECRET_KEY,BASE_URL: process.env.BASE_URL,API_ROOT: process.env.API_ROOT,API_URL: process.env.API_URL,},/*
   ** Headers of the page
   */
  head: {
    env: env.parsed,title: 'QuickMall',meta: [
      { charset: 'utf-8' },{
        name: 'viewport',content:
          'width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no',{
        hid: 'description',name: 'description',content: process.env.npm_package_description || '',],link: [{ rel: 'icon',type: 'image/x-icon',href: '/favicon.ico' }],/*
   ** Global CSS
   */
  css: ['@/assets/scss/app.scss'],/*
   ** Plugins to load before mounting the App
   */
  plugins: [
    { src: '~/plugins/persistedState.js',mode: 'client' },{ src: '~/plugins/signalr.js',{ src: '~/plugins/vuex-orm-axios.js' },{ src: '~/plugins/vuelidate' },/*
   ** Customize the progress-bar color
   */
  loading: { color: '#3B8070' },/*
   ** Nuxt.js dev-modules
   */
  buildModules: [
    // Doc: https://github.com/nuxt-community/eslint-module
    '@nuxtjs/eslint-module','@nuxtjs/gtm',gtm: {
    // https://github.com/nuxt-community/gtm-module
    // this.$gtm.push({ event: 'myEvent',...someAttributes })
    // dev: true,// Set to false to disable module in development mode
    // pageTracking: true,// Note: This is disabled by default to prevent double events when using alongside with Google Analytics so take care before enabling this option.
    id: 'GTM-XXXXXX',/*
   ** Nuxt.js modules
   */
  modules: [
    'bootstrap-vue/nuxt',// Doc: https://axios.nuxtjs.org/usage
    '@nuxtjs/axios','@nuxtjs/auth',// Doc: https://github.com/nuxt-community/dotenv-module
    '@nuxtjs/dotenv','@nuxtjs/pwa',pwa: {
    workbox: {},manifest: {
      name: 'QuickMall',lang: 'en',meta: {},icons: {},bootstrapVue: {
    componentPlugins: [
      // 'ButtonPlugin',// 'CardPlugin',// 'CarouselPlugin',// 'CollapsePlugin',// 'DropdownPlugin',// 'FormCheckboxPlugin',// 'FormFilePlugin',// 'FormGroupPlugin',// 'FormRadioPlugin',// 'ModalPlugin',// 'NavPlugin',// 'PaginationPlugin',// 'PopoverPlugin',// 'ProgressPlugin',// 'TablePlugin',// 'TabsPlugin',// 'ToastPlugin'
      // 'BVToastPlugin',directivePlugins: ['VBScrollspyPlugin','VBToggle'],css: false,bvCSS: true,/*
   ** Axios module configuration
   ** See https://axios.nuxtjs.org/options
   */
  axios: config.axios,/*
   ** Build configuration
   */
  build: {
    extractCSS: process.env.NODE_ENV === 'production',transpile: ['vue-agile'],parallel: true,// cache: true,// hardSource: true,// splitChunks: {
    //   layouts: true
    // },build: {
      plugins: [new LodashModuleReplacementPlugin()],resolve: {
        alias: {
          // Alias for using source of BootstrapVue
          'bootstrap-vue$': 'bootstrap-vue/src/index.js',module: {
        rules: [
          {
            test: /\.js$/,// Exclude transpiling `node_modules`,except `bootstrap-vue/src`
            exclude: /node_modules\/(?!bootstrap-vue\/src\/)/,use: {
              loader: 'babel-loader',options: {
                presets: ['env'],babel: {
      plugins: ['lodash'],presets: [
        [
          '@nuxt/babel-preset-app',{
            corejs: { version: 3 },/*
     ** You can extend webpack config here
     */
    extend(config,ctx) {
      // Run ESLint on save
      if (ctx.isDev && ctx.isClient) {
        config.module.rules.push({
          enforce: 'pre',test: /\.(js|vue)$/,loader: 'eslint-loader',exclude: /(node_modules)/,})
      }
    },nuxtI18n: {
    seo: false,}

当我使用nuxt dev运行应用程序时,这些问题不可复制。但是当通过运行koa使用backpack dev时,该问题可以复制。

这是我的背包配置:

module.exports = {
  webpack: (config,options,webpack) => {
    config.entry.main = './server/index.js'

    // Add NODE_PATH to webpack.
    // https://webpack.js.org/configuration/resolve/#resolve-modules
    // https://stackoverflow.com/questions/45894047/how-to-add-node-path-to-webpack-in-package-json
    config.resolve.modules = ['./server','./server/modules']
    return config
  },}

在构建时没有抛出错误,我唯一注意到的是我的css和插件未导入/注入。请让我知道我做错了什么或如何解决。我一直在将我的代码与以下存储库进行比较,但没有发现任何差异:

更新

因此我发现,使用yarn buildnuxt build && backpack build)运行应用程序并使用yarn startcross-env NODE_ENV=production node build/main.js)提供服务时,它实际上运行良好。我不知道为什么无法使用yarn bp-devbackpack dev

来解决问题

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


依赖报错 idea导入项目后依赖报错,解决方案:https://blog.csdn.net/weixin_42420249/article/details/81191861 依赖版本报错:更换其他版本 无法下载依赖可参考:https://blog.csdn.net/weixin_42628809/a
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下 2021-12-03 13:33:33.927 ERROR 7228 [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPL
错误1:gradle项目控制台输出为乱码 # 解决方案:https://blog.csdn.net/weixin_43501566/article/details/112482302 # 在gradle-wrapper.properties 添加以下内容 org.gradle.jvmargs=-Df
错误还原:在查询的过程中,传入的workType为0时,该条件不起作用 <select id="xxx"> SELECT di.id, di.name, di.work_type, di.updated... <where> <if test=&qu
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct redisServer’没有名为‘server_cpulist’的成员 redisSetCpuAffinity(server.server_cpulist); ^ server.c: 在函数‘hasActiveC
解决方案1 1、改项目中.idea/workspace.xml配置文件,增加dynamic.classpath参数 2、搜索PropertiesComponent,添加如下 <property name="dynamic.classpath" value="tru
删除根组件app.vue中的默认代码后报错:Module Error (from ./node_modules/eslint-loader/index.js): 解决方案:关闭ESlint代码检测,在项目根目录创建vue.config.js,在文件中添加 module.exports = { lin
查看spark默认的python版本 [root@master day27]# pyspark /home/software/spark-2.3.4-bin-hadoop2.7/conf/spark-env.sh: line 2: /usr/local/hadoop/bin/hadoop: No s
使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams['font.sans-serif'] = ['SimHei'] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -> systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping("/hires") public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate<String
使用vite构建项目报错 C:\Users\ychen\work>npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-