我已经通过使用亚马逊s3在Heroku上设置我的Django应用程序来设置静态和媒体文件.我一直遵循本指南https://www.caktusgroup.com/blog/2014/11/10/Using-Amazon-S3-to-store-your-Django-sites-static-and-media-files/和似乎成千上万的其他资源,collectstatic已经工作,heroku正在部署它 - 但显示400错误.当我尝试在本地运行它时,我获得更多信息:
Attempted access to '/css/reset.css' denied.
Run Code Online (Sandbox Code Playgroud)
这是突出显示的行:
<link rel="stylesheet" type="text/css" href="{% static '/css/reset.css' %}">
Run Code Online (Sandbox Code Playgroud)
我可以直接从URL加载静态文件,如果我从我的s3管理面板中获取它,所以我认为这不是一个存储桶策略问题,我已经搞砸了https/http选项,但没有快乐.所以我认为它必须是在代码中以某种方式被调用的错误路径 - 我只是看不到哪里!
任何帮助非常感谢,我不认为我已经眨了大约4个小时.
追溯:
File "/home/devtop/webdev/projects/intro/myvenv/lib/python3.5/site-packages/storages/backends/s3boto.py" in _normalize_name
358. return safe_join(self.location, name)
File "/home/devtop/webdev/projects/intro/myvenv/lib/python3.5/site-packages/storages/backends/s3boto.py" in safe_join
59. raise ValueError('the joined path is located outside of the base path'
During handling of the above exception (the joined path is located outside of the base path component), another exception occurred:
File "/home/devtop/webdev/projects/intro/myvenv/lib/python3.5/site-packages/django/core/handlers/exception.py" in inner
41. response = get_response(request)
File "/home/devtop/webdev/projects/intro/myvenv/lib/python3.5/site-packages/django/core/handlers/base.py" in _get_response
187. …Run Code Online (Sandbox Code Playgroud) 我有一个相对基本的项目,使用 Solidity 和 React 使用 Create React App 作为单页 dApp 工作。不过,我现在正尝试将其转移到 Nextjs,但遇到了一个障碍,我认为这与 Nextjs 所做的服务器端内容有关。我删除了所有冗余代码,只提供足够的代码来生成错误:
import { ethers, Contract } from 'ethers';
import Project from '../src/artifacts/contracts/Project.sol/Project.json';
const contractAddress = process.env.contract_address;
export default function App() {
const provider = new ethers.providers.Web3Provider(window.ethereum);
console.log(provider.getSigner())
return (
<div className="App">
<p>Hello!</p>
</div>
);
}
Run Code Online (Sandbox Code Playgroud)
这个错误是:
window is not defined
我看到其他人建议通过状态加载和设置它,如下所示:
const [provider, setProvider] = useState({})
React.useEffect(() => {
setProvider(new ethers.providers.Web3Provider(window.ethereum))
}, []);
const signer = provider.getSigner();
Run Code Online (Sandbox Code Playgroud)
但这返回:TypeError: provider.getSigner is not a function
但是,如果我注释掉这段代码,刷新并让页面加载,然后取消注释代码并让热重载刷新组件,我就不会收到这样的错误,并且可以成功 console.log …