【问题标题】:How to specify written on TypeScript server side entry point in "Nuxt TypeScript" project?如何在“Nuxt TypeScript”项目中指定写在 TypeScript 服务器端的入口点?
【发布时间】:2021-07-04 04:40:59
【问题描述】:

在我看到的基于JavaScritpt的Nuxt项目的例子中,服务器入口在server/index.js,这是它的默认代码(对于Express.js框架案例):

const express = require('express')
const consola = require('consola')
const { Nuxt, Builder } = require('nuxt')
const app = express()

// Import and Set Nuxt.js options
let config = require('../nuxt.config.js')
config.dev = !(process.env.NODE_ENV === 'production')

async function start() {
  // Init Nuxt.js
  const nuxt = new Nuxt(config)

  const {
    host = process.env.HOST || '127.0.0.1',
    port = process.env.PORT || 3000
  } = nuxt.options.server

  // Build only in dev mode
  if (config.dev) {
    const builder = new Builder(nuxt)
    await builder.build()
  }

  // Give nuxt middleware to express
  app.use(nuxt.render)

  // Listen the server
  app.listen(port, host)
  consola.ready({
    message: `Server listening on http://${host}:${port}`,
    badge: true
  })
}
start()

要使用标准 Nuxt 构建启动服务器脚本,名为 dev 脚本的任务已更改为:

"cross-env NODE_ENV=development nodemon server/index.js --watch server",

现在:如果我们想在 TypeScript 中(在 Nuxt TypeScript 项目中)编写 server/index,我们必须做什么?当然,只是将server/index.js 重命名为server/index.ts 是不够的,因为 Nuxt 必须知道我们在server/index.ts 中编写的源代码是什么,并且必须编译它。

Nuxt 从我们那里拿走了Webpack 的配置,上面写着“我会处理 Webpack 配置,你应该在 nuxt.config.js 中定义设置”。好吧,但是我们现在如何让 Nuxt 编译 server.ts 呢?

更具体

假设我们在server 子目录中有index.tsconsole.log("ok!) 内容。我们应该如何:

  1. 将其编译为 JavaScript,
  2. 启动服务器,在终端得到ok!反馈输出?

使用 Webpack 很简单,但这种情况是 TypeScript Nuxt 项目,无法直接配置 Webpack。

【问题讨论】:

标签: typescript nuxt.js


【解决方案1】:

Nuxt.js 有official TypeScript support,可以在这里找到:

假设您的项目已经有一个tsconfig.json,这就是您剩下的:

  1. @nuxt/typescript-build 添加为devDependency
  2. 将此行添加到您的nuxt.config.js
buildModules: ['@nuxt/typescript-build']

【讨论】:

  • 感谢您的回答。以上我都已经完成了,但是它将如何激活server/index.ts 编译以及我应该如何执行构建的结果服务器入口点?
  • 假设我们在server/index.ts 中有console.log("ok!")。我们如何编译它,启动服务器并在控制台输出中确认ok!
猜你喜欢
  • 2020-09-10
  • 2021-10-23
  • 2018-04-04
  • 1970-01-01
  • 2018-05-28
  • 2022-08-05
  • 1970-01-01
  • 2017-12-30
  • 2021-01-28
相关资源
最近更新 更多