【问题标题】:How to properly use ES6 Modules syntax in Typescript files (NextJS)?如何在 Typescript 文件(NextJS)中正确使用 ES6 模块语法?
【发布时间】:2021-11-18 21:20:19
【问题描述】:

问题似乎是循环的:

  1. package.json 没有 type: "module"。在这种情况下,在我的打字稿文件中使用模块时出现此错误:
An error occured while running the seed command:
/Users/me/code/me/prisma-learning/graphql-nextjs/prisma/seed.ts:1
import { PrismaClient } from '@prisma/client';
^^^^^^
  1. 所以我在package.json 中添加了type: "module",这就是现在的错误:
An error occured while running the seed command:
TypeError [ERR_UNKNOWN_FILE_EXTENSION]: Unknown file extension ".ts" for 
/Users/me/code/me/prisma-learning/graphql-nextjs/prisma/seed.ts

我只想在我的 TS 文件中使用 ES6 模块。代码来自官方 Prisma 样板项目: https://github.com/prisma/prisma-examples/tree/latest/typescript/graphql-nextjs

【问题讨论】:

    标签: typescript next.js package.json es6-modules react-typescript


    【解决方案1】:

    您的 NextJs 项目似乎没有配置为支持 typescript:

    1. 如果你使用node seed.ts运行seeder,你需要有ts-node打包或者将此文件编译成普通的JS文件(使用tsc或webpack)
    2. 如果您在项目的页面或 api 中使用 seed.ts 文件,请检查您是否有 tsconfig.json 文件并且 typescript 已安装为开发依赖项。

    如果它们都没有帮助,请提供有关您的项目环境和配置的更多信息。

    【讨论】:

      【解决方案2】:

      如果您在 package.json 中查看此特定示例,您会看到它们为 ts-node 指定了编译器选项:

          "ts-node": "ts-node --compiler-options \"{\\\"module\\\":\\\"commonjs\\\"}\"",
      

      但是对于“seed”命令不使用此选项运行它。

      所以你可以替换:

      "prisma": {
          "seed": "ts-node prisma/seed.ts"
        }
      

      "prisma": {
          "seed": "npm run ts-node prisma/seed.ts"
        }
      

      然后按照记录运行npx prisma db seed

      【讨论】:

        猜你喜欢
        • 2015-07-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-07-06
        • 2015-12-24
        • 2018-02-06
        • 2020-08-05
        相关资源
        最近更新 更多