javascript - SyntaxError:不能在没有模块的情况下使用导入语句,TypeError [ERR_UNKNOWN_FILE_EXTENSION]:Catch 22
问题描述
我一直有节点js的问题。
以下是相关代码(app.ts
):
const express = require("express");
const auth = require("./service/auth");
import { Request, Response } from "express";
import User from "./model/User";
import con from "./config/db";
const port = 3000;
const app = express();
app.use(express.json());
...
我得到的错误是:
(node:16524) Warning: To load an ES module, set "type": "module" in the package.json or use the .mjs extension.
(Use `node --trace-warnings ...` to show where the warning was created)
C:\Users\010bo\OneDrive\Documents\GitHub\rpg-backend\app\app.ts:4
import { Request, Response } from "express";
^^^^^^
SyntaxError: Cannot use import statement outside a module
at wrapSafe (internal/modules/cjs/loader.js:1117:16)
at Module._compile (internal/modules/cjs/loader.js:1165:27)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1221:10)
at Module.load (internal/modules/cjs/loader.js:1050:32)
at Function.Module._load (internal/modules/cjs/loader.js:938:14)
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:71:12)
at internal/main/run_main_module.js:17:47
所以我寻找解决方案并发现: SyntaxError: Cannot use import statement outside a module
这告诉我:
将 "type": "module" 添加到最近的父 package.json
所以添加"type": "module"
到 package.json。我现在得到的输出是:
internal/modules/run_main.js:54
internalBinding('errors').triggerUncaughtException(
^
TypeError [ERR_UNKNOWN_FILE_EXTENSION]: Unknown file extension ".ts" for C:\Users\010bo\OneDrive\Documents\GitHub\rpg-backend\app\app.ts
[90m at Loader.defaultGetFormat [as _getFormat] (internal/modules/esm/get_format.js:65:15)[39m
[90m at Loader.getFormat (internal/modules/esm/loader.js:98:42)[39m
[90m at Loader.getModuleJob (internal/modules/esm/loader.js:227:31)[39m
[90m at async Loader.import (internal/modules/esm/loader.js:161:17)[39m {
code: [32m'ERR_UNKNOWN_FILE_EXTENSION'[39m
}
所以我再次上网,寻找解决方案并发现:无法运行我的 Node.js Typescript 项目 TypeError [ERR_UNKNOWN_FILE_EXTENSION]: Unknown file extension ".ts" for /app/src/App.ts
这告诉我:
从 package.json 中删除 "type": "module"
所以我想我发现自己处于第 22 条陷阱的情况。我不确定下一步该去哪里。
我还尝试了SyntaxError 中的其他解决方案:无法在模块外使用导入语句
使用 .mjs 扩展名显式命名文件。所有其他文件,例如 .js 将被解释为 CommonJS,如果 type 未在 package.json 中定义,则这是默认值。
这不起作用,要么给我同样的错误,要么给我一个不同的语法错误,我认为是因为我使用的是打字稿。
提前感谢任何可以提供帮助的人。
解决方案
const { Request, Response } = require("express")
其他的也一样。
推荐阅读
- http - 如何测试客户端代码是否正确超时 API 请求到外部服务器
- typescript - Nuxt 打字稿 | 如何在页面组件中使用phosphor-vue组件
- javascript - 表格粘性标题和弹出框之间的冲突
- python - 从本地设置的模块调用带有值的 Python 函数
- python - 用于 Youtube 的 Python Selenium Opera - 出现错误
- javascript - 如何区分 Javascript 中的列表和对象?
- java - 在java中使用文件IO来读写一个我自己的集合类
- firebase - 为什么 Firebase 需要 Google 密钥才能登录?
- r - 如何调整 Shiny 中生成的图形的图例
- c++ - 运行“make -j”时的构建问题-“je_malloc”属性指令被忽略