Запустите nuxt на https локально - проблема с nuxt.config.js - PullRequest
0 голосов
/ 19 января 2019

Я пытаюсь запустить nuxt локально с https, чтобы проверить некоторые геолокации.(https://nuxtjs.org/, https://nuxtjs.org/api/nuxt)

Я следовал этому уроку: https://www.mattshull.com/blog/https-on-localhost

А потом я нашел это: https://github.com/nuxt/nuxt.js/issues/146

Кажется, обе ссылкидовольно красиво описать, как запускать nuxt с server.js программно.

Дело в том, что в моем nuxt.config.js у меня возникают некоторые проблемы. Я получаю следующую ошибку при запуске runnung yarn dev:

/Users/USER/Documents/github/mynuxtrepo/nuxt.config.js:2
import { module } from 'npmmodule'

> SyntaxError: Unexpected token {

В моем конфиге nuxt я импортирую специальный помощник для генерации локализованных маршрутов. Не очень важно, что он делает, но, очевидно, он не может обработать синтаксис импорта. Я предполагаю, что версия узла не понимает.

Так как я могу заставить его работать? Нужно ли мне требовать все вместо импорта? Или мое предположение неверно и причина кроется совсем в другом?

Спасибо за вашу помощь Приветствия.

------ Редактировать 1: Мой нук-конфиг выглядит следующим образом:

// eslint-disable-next-line prettier/prettier
import { generateLocalizedRoutes, generateRoutesFromData } from 'vuecid-helpers'
import config from './config'

// TODO: Add your post types
const postTypes = [{ type: 'pages' }, { type: 'posts', paginated: true }]

// TODO: Add your site title
const siteTitle = 'Title'
const shortTitle = 'short title'
const siteDescription = 'Page demonstrated with a wonderful example'
const themeColor = '#ffffff'
// TODO: Replace favicon source file in /static/icon.png (512px x 512px)
// eslint-disable-next-line prettier/prettier
const iconSizes = [32, 57, 60, 72, 76, 144, 120, 144, 152, 167, 180, 192, 512]

module.exports = {
  mode: 'universal',
  /*
  ** Headers of the page
  */
  head: {
    title: 'Loading…',
    htmlAttrs: {
      lang: config.env.DEFAULTLANG,
      dir: 'ltr' // define directionality of text globally
    },
    meta: [
      { charset: 'utf-8' },
      { name: 'viewport', content: 'width=device-width, initial-scale=1' },

      // TODO: Check this info
      { name: 'author', content: 'Author' },
      { name: 'theme-color', content: themeColor },

      // TODO: Add or remove google-site-verification
      {
        name: 'google-site-verification',
        content: '...W1GdU'
      }
    ],
    link: []
  },

  /*
  ** env: lets you create environment variables that will be shared for the client and server-side.
  */
  env: config.env,

  /*
  ** Customize the progress-bar color
  ** TODO: Set your desired loading bar color
  */
  loading: { color: '#0000ff' },

  /*
  ** CSS
  */
  css: ['@/assets/css/main.scss'],

  /*
  ** Plugins
  */
  plugins: [
    { src: '~/plugins/global.js' },
    { src: '~/plugins/throwNuxtError.js' },
    { src: '~/plugins/axios' },
    { src: '~/plugins/whatinput.js', ssr: false },
    { src: '~/plugins/i18n.js', injectAs: 'i18n' },
    { src: '~/plugins/vuex-router-sync' },
    { src: '~/plugins/vue-bows' },
    { src: '~/plugins/vue-breakpoint-component', ssr: false }
  ],

  /*
  ** Modules
  */
  modules: [
    '@nuxtjs/axios',
    '@nuxtjs/sitemap',
    [
      '@nuxtjs/pwa',
      {
        icon: {
          sizes: iconSizes
        },
        // Override certain meta tags
        meta: {
          viewport: 'width=device-width, initial-scale=1',
          favicon: true // Generates only apple-touch-icon
        },
        manifest: {
          name: siteTitle,
          lang: config.env.DEFAULTLANG,
          dir: 'ltr',
          short_name: shortTitle,
          theme_color: themeColor,
          start_url: '/',
          display: 'standalone',
          background_color: '#fff',
          description: siteDescription
        }
      }
    ]
  ],

  /*
  ** Workbox config
  */
  workbox: {
    config: {
      debug: false,
      cacheId: siteTitle
    }
  },

  /*
  ** Axios config
  */
  axios: {
    baseURL: '/'
  },

  /*
  ** Generate
  */
  generate: {
    subFolders: true,
    routes: [
      ...generateRoutesFromData({
        langs: config.env.LANGS,
        postTypes: postTypes,
        dataPath: '../../../../../static/data',
        bundle: 'basic',
        homeSlug: config.env.HOMESLUG,
        errorPrefix: config.env.ERROR_PREFIX
      })
    ]
  },

  /*
  ** Build configuration
  */
  build: {
    extend(config, { isDev, isClient }) {
      /*
      ** Run ESLINT on save
      */
      if (isDev && isClient) {
        config.module.rules.push({
          enforce: 'pre',
          test: /\.(js|vue)$/,
          loader: 'eslint-loader',
          exclude: /(node_modules)/
        })
      }
    }
  },

  /*
  ** Router
  */
  router: {
    linkActiveClass: 'is-active',
    linkExactActiveClass: 'is-active-exact',
    middleware: ['i18n'],
    extendRoutes(routes) {
      // extends basic routes (based on your files/folders in pages directory) with i18n locales (from our config.js)
      const newRoutes = generateLocalizedRoutes({
        baseRoutes: routes,
        defaultLang: config.env.DEFAULTLANG,
        langs: config.env.LANGS,
        routesAliases: config.routesAliases
      })

      // Clear array
      routes.splice(0, routes.length)

      // Push newly created routes
      routes.push(...newRoutes)
    }
  },

  /*
  ** Sitemap Configuration
  */
  sitemap: {
    path: '/sitemap.xml',
    hostname: config.env.FRONTENDURLPRODUCTION,
    cacheTime: 1000 * 60 * 15,
    generate: true,
    routes: [
      ...generateRoutesFromData({
        langs: config.env.LANGS,
        postTypes: postTypes,
        dataPath: '../../../../../static/data',
        bundle: 'basic',
        homeSlug: config.env.HOMESLUG,
        errorPrefix: config.env.ERROR_PREFIX
      })
    ]
  }
}

Вы можете видеть, что методы generateLocalizedRoutes и generateRoutesFromDataиспользуются для создания локализованных маршрутов, а также принимает файлы JSON послегенерировать маршруты из данных (:slug).

--------- Редактировать 2: Я получил его для запуска в конце концов.Мне пришлось требовать все части в nuxt.config.js вместо того, чтобы импортировать их.Я также решил проблемы с сертификатами.Поэтому я подумал, что это все круто ?.

НО !!!?: Потом я узнал, что мой шаблон конфигурации используется в моем шаблоне сообщения.Поэтому я подумал, что мне также понадобится файл в моем шаблоне: например const config = require('~/config').Но тогда я получу эту ошибку:

[nuxt] Ошибка при инициализации приложения. Ошибка: «export» только для чтения »

После некоторых исследований я обнаружилэто, вероятно, вещь при использовании common.js require и module.exports вместе с ES6 import / export в моем проекте.(Возможно, связано с: https://github.com/FranckFreiburger/vue-pdf/issues/1).

Так как же я могу по-прежнему использовать мой config.js при программном запуске nuxt (с require), а затем и в моем приложении?

Я рад слышатьесть идеи по этому поводу ... ура

1 Ответ

0 голосов
/ 25 января 2019

Ну, просто чтобы закрыть это: Моя проблема возникла из-за запуска nuxt в качестве приложения узла, которое не понимает операторы импорта ES6, которые появились в моей конфигурации nuxt.

Так что мне пришлось переписать вещи для работы с commons.js (требуется).

Пока это работает. (Я также пытался запустить babel-node при запуске server.js, но безуспешно. Это не значит, что это не сработало, я просто не хотел больше стараться).

Спасибо за комментарии. ура

...