当应用程序通过双击启动时,我的 py2app 构建会显示一条带有终止按钮的错误消息。但是,如果我直接在终端中打开它,那么它运行良好。以下所有终端命令都成功启动了应用程序:
# .MyApp.app/Contents/MacOS/MyApp
# open MyApp.app
# open -a MyApp.app
Run Code Online (Sandbox Code Playgroud)
我已经阅读了几篇 关于类似 py2app 错误的帖子,但我无法弄清楚这里可能是什么问题。这个问题似乎已经存在至少四年了,不是 py2app 特有的,似乎与 macOS 上 Python 的一般问题有关。pyinstaller 的用户报告了完全相同的问题,AFAIK 看不到明显的解决方案。
我的 setup.py 文件:
from setuptools import setup
APP = ['myapp.py']
DATA_FILES = [('img', ['img/myapp-logo.png']), ('data', ['data/data.yml'])]
OPTIONS = {'iconfile': 'icon.icns'}
setup(
app=APP,
name='My App',
data_files=DATA_FILES,
options={'py2app': OPTIONS},
setup_requires=['py2app'],
)
Run Code Online (Sandbox Code Playgroud)
macOS 控制台在 system.log 中显示以下消息: com.apple.xpc.launchd[1] (org.pythonmac.unspecified.MyApp.4952[16783]): Service exited with abnormal code: 255
嫌疑人1:文件访问?
pyinstaller GitHub 问题页面上的这个线程有多个人报告了相同的错误,但没有明确的修复。这个提议的解决方案似乎与 pyinstaller …
我无法理解 NextJS 13 中处理服务器端和客户端组件之间数据交换的正确方法。
我试图通过创建尽可能简单的场景来理解这一点。我有这两个函数可以简单地在服务器上读取和写入 JSON 文件:
import fs from 'fs'
export const saveData = async (data) => {
const jsonData = JSON.stringify(data)
try {
await fs.promises.writeFile('data/data.json', jsonData)
} catch (err) {
console.log('Error', err)
}
}
export const getData = async () => {
try {
const jsonData = await fs.promises.readFile('data/data.json')
const data = JSON.parse(jsonData)
return data
} catch (err) {
console.log('Error', err)
return null
}
}
Run Code Online (Sandbox Code Playgroud)
显示数据的 React 组件:
export const SomeComponent = ({ data }) => <p>{data.someKey}</p>
Run Code Online (Sandbox Code Playgroud)
以及一个获取用户输入的交互式 …