node.js - NodeJS:文件已导入,但未执行
问题描述
这是我在 NodeJS 服务器中的文件结构:
src
- api
- - methods
- - - SOME_API_METHOD.js
- - - ANOTHER_API_METHOD.js
- - - THIRD_API_METHOD
- - - - index.js
- - - - THIRD_API_METHOD.js <- that's the file that caused a problem
- - - - someHelperFIleForTheThirdApiMethod.js
- - - THIRD_API_METHOD.js <- this is the file I added eventually to fix the issue
- - index.js
- index.js
- gateway.js <- that's where the the THIRD_API_METHOD is called from
gateway.js
看起来像这样:
import api from './api'
export default (req, res) => {
if (api[req.body.method]) {
console.log(`all good, execute ${req.body.method}`)
api[req.body.method](req.body.payload, res)
console.log('execution finished')
}
}
src/api/methods/THIRD_API_METHOD/index.js
:
import THIRD_API_METHOD from './THIRD_API_METHOD'
export default THIRD_API_METHOD
src/api/methods/THIRD_API_METHOD/THIRD_API_METHOD.js
:
console.log('THIRD_API_METHOD mounted')
export default async () => {
console.log('starting THIRD_API_METHOD')
}
所以,当我尝试执行时THIRD_API_METHOD
,我只得到了all good, execute THIRD_API_METHOD
和execution finished
日志。不是其他人。我必须添加src/api/methods/THIRD_API_METHOD.js
以下内容来解决问题:
import THIRD_API_METHOD from './THIRD_API_METHOD/THIRD_API_METHOD'
export default THIRD_API_METHOD
然后我有这些日志:
THIRD_API_METHOD mounted
all good, execute THIRD_API_METHOD
starting THIRD_API_METHOD
execution finished
这意味着一切都很好。
那么,这到底是怎么可能的呢?我已经将所有内容都包含在try...catch
声明中,认为某处存在静默错误。没有什么。此外,我还有另一种方法包装在一个文件夹中,就像THIRD_API_METHOD
那个该死的作品一样。在我的本地 NodeJS 10 环境中,原始结构也可以正常工作。它似乎仅在部署到 kube 引擎的 docker 容器中工作。
无论如何,怎么可能一切import
正常但文件没有挂载?
ps我知道,我必须在docker中做所有事情,我正在这样做,我只是想知道这个问题是怎么可能的。
Dockerfile:
FROM node:9.4.0
COPY ./dist /server/dist
COPY ./node_modules /server/node_modules
ENV PORT 80
EXPOSE 80
WORKDIR /server/dist
ENTRYPOINT [ "node", "index.js" ]
解决方案
推荐阅读
- windows-10 - 从文件名中提取日期戳并插入到 Date Taken meta (Windows)
- reactjs - React:对象作为 React 子级无效(找到:带键的对象。如果您打算渲染子级集合,请改用数组
- gatling - Gatling:在 .check(regex) 中提取多个组
- kubernetes - 使用 Kubeadm 部署本地 Docker 镜像
- php - 非常基本的 SQL 制作页面炸弹
- laravel-controller - 有什么方法可以在标签中发送 METHOD 值
- sql-server - SQL Server 代理作业监控(作业是否开始了?)
- navigationbar - 如何更改导航栏中的背景或颜色?
- google-chrome-extension - 从 origin 访问 'https://website.com/ajaxrequest' 的 XMLHttpRequest
' 已被 CORS 策略阻止 - javascript - 从数组中删除新添加的元素的问题