我运行 create-react-app 然后切换到目录并运行 npm start。只是想知道如何指定一个与 index.js 不同的文件在服务器上启动
这是我的 package.json 文件:
{
"name": "todo",
"version": "0.1.0",
"private": true,
"dependencies": {
"react": "^16.2.0",
"react-dom": "^16.2.0",
"react-scripts": "1.1.1"
},
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test --env=jsdom",
"eject": "react-scripts eject"
}
}
我尝试改变:
"start": "react-scripts start",
至
"start": "node index.js", or "start": "node ./src/index.js",
但这些不起作用
最佳答案
目前,没有理由在 React 中运行不同的 file.js。所以你需要通过命令弹出你的React应用程序
npm run eject
通过运行它,您将完全控制您的项目。然后你需要修改 config/paths.js 中的一些代码
module.exports = {
dotenv: resolveApp('.env'),
appPath: resolveApp('.'),
appBuild: resolveApp(buildPath),
appPublic: resolveApp('public'),
appHtml: resolveApp('public/index.html'),
//appIndexJs: resolveModule(resolveApp, 'src/index'),
appIndexJs: resolveModule(resolveApp, 'src/'+ process.argv[process.argv.length-1]),
appPackageJson: resolveApp('package.json'),
appSrc: resolveApp('src'),
appTsConfig: resolveApp('tsconfig.json'),
appJsConfig: resolveApp('jsconfig.json'),
yarnLockFile: resolveApp('yarn.lock'),
testsSetup: resolveModule(resolveApp, 'src/setupTests'),
proxySetup: resolveApp('src/setupProxy.js'),
appNodeModules: resolveApp('node_modules'),
swSrc: resolveModule(resolveApp, 'src/service-worker'),
publicUrlOrPath,
};
记下这些行:
//appIndexJs: resolveModule(resolveApp, 'src/index'),
appIndexJs: resolveModule(resolveApp, 'src/'+ process.argv[process.argv.length-1]),
src/index 意味着 npm start 将使用 src/index.js 运行您的应用程序。因此,通过更改代码,您可以传递带有新文件名的参数,例如
npm start -- foo
因此您的应用程序将使用 src/foo.js 中的新文件运行。 通常你的论点是最后一项。如果代码不起作用,您可以尝试通过
打印所有参数// print process.argv
process.argv.forEach(function (val, index, array) {
console.log(index + ': ' + val);
});
关于reactjs - npm start 如何指定index.js以外的启动文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49737535/