Javascript 网页:express can';找不到包错误404
我知道这个问题被问了很多,但我已经尝试了所有的方法,但没有任何效果! 事情是这样的:我正在为Practice witch开发一个同构React应用程序,这是2017年本教程的一个大副本,我试图更新它 她的大部分代码现在已被弃用,我重新编码了。 重要的一点是,我使用webpack来编译应用程序的所有文件夹,包括index.js文件,而不是babel来编译所有文件夹,只使用webpack来编译index.js文件,就像她那样 问题是我通过一个js函数renderFullPage.jsJavascript 网页:express can';找不到包错误404,javascript,reactjs,express,webpack,isomorphic-javascript,Javascript,Reactjs,Express,Webpack,Isomorphic Javascript,我知道这个问题被问了很多,但我已经尝试了所有的方法,但没有任何效果! 事情是这样的:我正在为Practice witch开发一个同构React应用程序,这是2017年本教程的一个大副本,我试图更新它 她的大部分代码现在已被弃用,我重新编码了。 重要的一点是,我使用webpack来编译应用程序的所有文件夹,包括index.js文件,而不是babel来编译所有文件夹,只使用webpack来编译index.js文件,就像她那样 问题是我通过一个js函数renderFullPage.js expo
export default function renderFullPage(html, preloadedState)
return `
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8"/>
<title> Isomorphic Router React Mongoose App initialised with data</title>
</head>
<body>
<div id="root">
${html}
</div>
<script>
window.__PRELOADED_STATE__ = ${JSON.stringify(preloadedState).replace(/</g, '\\u003c')}
</script>
<script type="application/javascript" src="bundle-app.js"></script>
</body>
</html>
`;
}
这里还有webpack.config.js:
{
"name": "ssr-react-router-mongoose-isomorphic-app",
"version": "1.0.0",
"description": "isomorpic app",
"main": "./app/index.js",
"scripts": {
"build:server": "babel ./app/server -d build/server",
"build:watch:server": "babel ./app/server -d build/server --watch",
"build:client": "webpack --mode development --config webpack.config.js/ --progress ",
"build:watch:client": "webpack-dev-server -d --hot --config webpack.config.js --watch",
"build:prod": "npm run build:server && npm run build:client",
"start": "npm run build:prod && NODE_ENV=production node ./build/server/index.js",
"start:dev": "parallelshell \"npm run build:watch:client\" \"nodemon ./build/server/bundle-server.js\" ",
"start:dev:client": "webpack-dev-server"
},
"author": "Rando Mathias",
"license": "ISC",
"dependencies": {
"babel-polyfill": "^6.26.0",
"cors": "^2.8.5",
"express": "^4.17.1",
"mongoose": "^5.10.6",
"react": "^16.13.1",
"react-dom": "^16.13.1",
"react-router-dom": "^5.2.0"
},
"devDependencies": {
"@babel/cli": "^7.11.6",
"@babel/core": "^7.11.6",
"@babel/preset-env": "^7.11.5",
"@babel/preset-react": "^7.10.4",
"babel-loader": "^8.1.0",
"file-loader": "^6.1.0",
"html-webpack-plugin": "^4.5.0",
"nodemon": "^2.0.4",
"parallelshell": "^3.0.1",
"webpack": "^4.44.2",
"webpack-cli": "^3.3.12",
"webpack-dev-server": "^3.11.0"
}
}
我想从build文件夹加载bundle-app.js
提前感谢您的帮助您可以从项目的根目录开始脚本
"start": "npm run build:prod && NODE_ENV=production node ./build/server/index.js",
并尝试通过如下设置pass来访问静态文件
const assets = express.static(path.join(__dirname,'../'));
const assets = express.static(path.join('./build'));
但这里的问题是路径应该相对于脚本开始文件夹。在您的情况下,它是您执行
npm start
命令的项目根文件夹
您需要更改静态文件路径,将其设置为相对于项目根而不是服务器包
如果我是对的,它将如下
const assets = express.static(path.join(__dirname,'../'));
const assets = express.static(path.join('./build'));
您好,谢谢您的回复,要创建项目,我使用以下命令。npm运行构建:客户端,然后npm运行开始:dev