我正在使用express
创建一个API,我希望每个endpoint都有一个文件。理想情况下,我希望在它的文件中创建路由器,将其导出,然后导入endpoint文件以运行它们。endpoint文件将再次导入路由器,然后使用。获取
,或。post
或任何在路由器上创建实际endpoint的操作。
所以基本上,我的目标是让一个文件运行另一个文件,该文件在运行不同的文件之前使用第一个文件导出的值。
我以前在一个项目中使用require()
语法做过这项工作,但现在我正在尝试将其转换为另一个项目的import
/export
语法。
路由器。js
const express = require("express");
// Create and export a new router
const TestRouter = express.Router();
module.exports = TestRouter;
// Make the endpoints register themselves
require("./getdata.js");
require("./createdata.js");
然后在endpoint(getdata.js和createdata.js):
const TestRouter = require("./TestRouter.js");
TestRouter.get("/:id", async (req, res) => {
// ...
});
测试路由器。js
import { Router } from "express";
// Create and export our new router
const TestRouter = Router();
export default TestRouter;
// Import endpoints so they can register themselves
import "./getdata.js";
import "./createdata.js";
endpoint(getdata.js和createdata.js):
import TestRouter from "./TestRouter.js";
TestRouter.get("/:id", async (req, res) => {
// ...
});
当我现在尝试运行此项目时,会出现如下错误:
file:///.../src/routes/getdata.js:3
TestRouter.get("/:id", async (req, res) => {
^
ReferenceError: Cannot access 'SessionRouter' before initialization
at file:///.../src/routes/getdata.js:3:1
...
我目前最有可能的猜测是,模块中的导出实际上并不是在export
语句时设置的,而是在处理完所有其他内容后各自的文件到达末尾时设置的。
因此,我的问题是,是否有一种方法可以在执行export
语句时设置导出,或者有一种简单的方法(endpoint文件中大约有1-2行)让endpoint在调用之前等待
,TestRouter
的实际设置。获取。在上面张贴
或其他内容。
我知道我可以让endpoint文件只导出实际的endpoint处理程序:
const getdata = async (req, res) => {
// ...
}
export default getdata;
然后在路由器文件中调用. get
:
import { Router } from "express";
// Import endpoint handlers
import getdata from "./getdata.js";
// Create our new router
const TestRouter = Router();
// Register endpints
TestRouter.get("/:id", getdata);
但是我想避免这种情况——如果可能的话——因为每个endpoint都需要不同的中间件配置,这意味着我必须在TestRouter.get
(等等)调用中指定所有中间件。)调用,我真的不想要由于可读性而塞进路由器文件。
您可以通过将TestRouter.js
分成两个部分来解决这个问题:
TestRouter.js
)main.js
)...让第二部分成为你的切入点。这打破了TestRouter.js
和getdata.js
/createdata.js
之间的循环,导致后者尝试访问从TestR<--plhd--3/导出的绑定>
在它被初始化之前。
main。js
:
// Create and export our new router
import TestRouter from "./TestRouter.js";
// Or, actually, just: import "./TestRouter.js";
// Import endpoints so they can register themselves
import "./getdata.js";
import "./createdata.js";
TestRouter。js
:
import { Router } from "express";
// Create and export our new router
const TestRouter = Router();
export default TestRouter;
getdata.js
/createdata.js
保持不变。
关于在ES6中使用导入导出,我得到以下错误: SyntaxError:导出声明只能出现在顶层 我上网找办法解决这个问题,但我做不到。谁能解释一下。我是ES6的新手,特别是导入和导出。(我使用StealJS完全是为了这种东西)谢谢! js文件有: 应用程序JS functions.js
本文向大家介绍详解JS模块导入导出,包括了详解JS模块导入导出的使用技巧和注意事项,需要的朋友参考一下 开发中基本不会将所有的业务逻辑代码放在一个JS文件中,特别是在使用前端框架,进行组件化开发中时,会复用相应的组件。这时,就会用到模块导入/导出的方法了。 当然,上面提到有模块的概念,也是在JS用于服务器端编程的时候才会出现,我们在使用前端框架时,使用npm run dev,不就是启动了一个nod
问题内容: react.js的新功能并尝试遵循本教程。不幸的是,页面中给出的代码无法正常工作。webpack抱怨 想知道如何解决它。谢谢。 === App.jsx ==== === main.js === 更新1 我注释掉了所有内容,并在末尾添加了以下内容 现在没有编译错误,但是网页为空白。我不确定这里出什么问题了。 问题答案: 您只能声明一个默认出口,例如: 要么 然后做 如果要导出更多内容,则
模块“Transformer”解析为非模块实体,不能使用此构造导入。 如何导入类?其实我只是想利用那堂课。我不希望指令在我的代码中产生附带效应。我只想用它:'(
数据的导入、导出任务一旦成功建立,结果将以邮件的形式发送到创建任务的用户邮箱里。 数据导出 接口 POST https://cloud.minapp.com/userve/v1/table/:table_id/export/ 其中 table_id 是数据表的 ID 请求参数 参数 类型 必填 说明 file_type String 是 导出文件的格式,支持 csv、json 格式 mode St
数据的导入、导出任务一旦成功建立,结果将以邮件的形式发送到创建任务的用户邮箱里。 数据导出 接口 POST https://cloud.minapp.com/oserve/v1/table/:table_id/export/ 其中 table_id 是数据表的 ID 请求参数 参数 类型 必填 说明 file_type String 是 导出文件的格式,支持 csv、json 格式 mode St
本文向大家介绍详解AngularJS中module模块的导入导出,包括了详解AngularJS中module模块的导入导出的使用技巧和注意事项,需要的朋友参考一下 AngularJS是一款来自Google的前端JS框架,它的核心特性有:MVC、双向数据绑定、指令和语义化标签、模块化工具、依赖注入、HTML模板,以及对常用工具的封装,例如$http、$cookies、$location等。 关于An
我试图上传一个图像到内存使用multer,然后处理它与夏普和保存到磁盘。当我尝试在我的中间件中做多个module.exports时。 错误是: TypeError FileUpload.Single不是函数 到目前为止的路线是: 当我刚刚有下面的路由之前,尝试添加图像处理,我没有得到一个错误;