MCPcopy Create free account
hub / github.com/aaPanel/BaoTa / start_project

Method start_project

mod/project/nodejs/nodeMod.py:119–297  ·  view source on GitHub ↗

@name 启动项目

(self, get)

Source from the content-addressed store, hash-verified

117
118 # 2024/7/12 上午9:48 启动项目
119 def start_project(self, get):
120 '''
121 @name 启动项目
122 '''
123 pid_file = "{}/{}.pid".format(self.node_pid_path, get.project_name)
124 if os.path.exists(pid_file):
125 self.stop_project(get)
126
127 project_find = self.get_project_find(get.project_name)
128 if not project_find: return public.returnResult(False, '项目不存在', code=5)
129
130 project_find = self.get_project_find(get.project_name)
131 if project_find['edate'] != "0000-00-00" and project_find['edate'] < datetime.datetime.today().strftime("%Y-%m-%d"):
132 return public.returnResult(False, '当前项目已过期,请重新设置项目到期时间', code=5)
133
134 self._update_project(get.project_name, project_find)
135 if not os.path.exists(project_find['path']):
136 error_msg = '启动失败,Nodejs项目{},运行目录{}不存在!'.format(get.project_name, project_find['path'])
137 public.WriteLog(self.log_name, error_msg)
138 return public.returnResult(False, error_msg, code=5)
139
140 get.package_info = get.get("package_info", {})
141 if not get.package_info:
142 package_file = "{}/package.json".format(project_find['path'])
143 if os.path.exists(package_file):
144 try:
145 get.package_info = json.loads(public.readFile(package_file))
146 except:
147 pass
148
149 if get.package_info:
150 dependency_fields = [
151 "dependencies",
152 "devDependencies",
153 "peerDependencies",
154 "optionalDependencies",
155 "bundledDependencies",
156 "bundleDependencies",
157 "resolutions", # Yarn 专用
158 "overrides" # npm 7+ 专用
159 ]
160 node_modules_path = "{}/node_modules".format(project_find['path'])
161 if "dependencies" in get.package_info and not os.path.exists(node_modules_path):
162 if hasattr(get, "_ws"):
163 get._ws.send(json.dumps(public.returnResult(
164 True,
165 "项目依赖安装异常,请先到模块管理中重新安装依赖后再试!",
166 code=-1
167 )))
168 else:
169 return public.returnResult(False, "项目依赖安装异常,请先到模块管理中重新安装依赖后再试!", code=5)
170
171 if not get.package_info: get.package_info['scripts'] = {}
172 if 'scripts' not in get.package_info: get.package_info['scripts'] = {}
173 try:
174 scripts_keys = get.package_info['scripts'].keys()
175 except:
176 scripts_keys = []

Callers 2

create_projectMethod · 0.95
restart_projectMethod · 0.95

Calls 15

stop_projectMethod · 0.95
get_project_findMethod · 0.95
_update_projectMethod · 0.95
get_node_binMethod · 0.95
get_npm_binMethod · 0.95
get_last_envMethod · 0.95
get_project_pidsMethod · 0.95
returnResultMethod · 0.80
readFileMethod · 0.80
writeFileMethod · 0.80
ExecShellMethod · 0.80

Tested by

no test coverage detected