Как использовать fastify с Nuxt?
Я создал приложение nuxt, используя: yarn create nuxt-app <my-project>
с коа. Я создал второй файл index.js с помощью fastify-nuxt, и он работал, но теперь я получаю некоторые неприятные ошибки:
error in ./.nuxt/client.js
Module build failed: TypeError: this.setDynamic is not a function
at PluginPass.pre (/media/DarkHawk/srv/NodesProjects//mainWebsite/node_modules/babel-plugin-transform-runtime/lib/index.js:31:12)
at transformFile (/media/DarkHawk/srv/NodesProjects//mainWebsite/node_modules/@babel/core/lib/transformation/index.js:78:27)
at runSync (/media/DarkHawk/srv/NodesProjects//mainWebsite/node_modules/@babel/core/lib/transformation/index.js:45:3)
at runAsync (/media/DarkHawk/srv/NodesProjects//mainWebsite/node_modules/@babel/core/lib/transformation/index.js:35:14)
at process.nextTick (/media/DarkHawk/srv/NodesProjects/__/mainWebsite/node_modules/@babel/core/lib/transform.js:34:34)
at _combinedTickCallback (internal/process/next_tick.js:131:7)
at process._tickCallback (internal/process/next_tick.js:180:9)
@ multi webpack-hot-middleware/client?name=client&reload=true&timeout=30000&path=/__webpack_hmr ./.nuxt/client.js
Мой packages.json выглядит так:
{
"name": "test",
"version": "1.0.0",
"description": "My groundbreaking Nuxt.js project",
"author": "Gogs",
"private": true,
"scripts": {
"dev": "cross-env NODE_ENV=development nodemon server/index.js --watch server",
"devfast": "cross-env NODE_ENV=development nodemon server/indexfas.js --watch server",
"build": "nuxt build",
"start": "cross-env NODE_ENV=production node server/index.js",
"generate": "nuxt generate",
"lint": "eslint --ext .js,.vue --ignore-path .gitignore .",
"precommit": "npm run lint"
},
"dependencies": {
"@nuxtjs/axios": "^5.0.0",
"cookie": "^0.3.1",
"cross-env": "^5.2.0",
"fastify": "^1.12.1",
"fastify-nuxt": "^1.0.12",
"fastify-vue-plugin": "^1.2.3",
"iview": "^3.1.3",
"js-cookie": "^2.2.0",
"koa": "^2.5.2",
"koa-router": "^7.4.0",
"nuxt": "^2.0.0",
"paseto.js": "^0.1.2",
"pg": "^7.5.0",
"secure-password": "^3.1.0",
"vue-loader": "^14.2.2"
},
"devDependencies": {
"eslint": "^5.0.1",
"eslint-config-prettier": "^3.1.0",
"eslint-loader": "^2.0.0",
"eslint-plugin-prettier": "2.6.2",
"eslint-plugin-vue": "^4.0.0",
"nodemon": "^1.11.0",
"prettier": "1.14.3"
}
}
И мой indexfas.js:
const host = process.env.HOST || '127.0.0.1'
const port = process.env.PORT || 3000
const fastify = require('fastify')()
const nuxtConfig = require('../nuxt.config')
fastify.register(require('fastify-nuxt'), nuxtConfig)
fastify.ready()
fastify.listen(port, () => {
consola.info('> Listening on port 3000')
})
Что я могу сделать, чтобы заставить работать работать? Почему я получаю эту ошибку? Пару месяцев назад у меня не было этой ошибки при создании нового проекта Nuxt с fastify. Может быть, я что-то не правильно сделал?
Спасибо!
РЕДАКТИРОВАТЬ: После установки тонны пакетов, я, наконец, получил его для запуска без выдачи ошибки:
"@babel/core": "^7.1.2",
"@babel/preset-env": "^7.1.0",
"@babel/traverse": "^7.1.4"
Мой раздел сборки файла nuxt.config.js:
build: {
analyze: true,
babel: {
presets: ['@babel/preset-env'],
plugins: ['@babel/plugin-syntax-dynamic-import']
},
// filenames: {
// chunk: ({ isDev }) => (isDev ? '[name].js' : '[id].[chunkhash].js')
// },
/*
** 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)/
})
}
}
}
Но работают только определенные маршруты внутри fastify, а nuxt-маршруты - нет и возвращают PAge, не найденный.