2

我运行 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",

但那些不起作用

4

2 回答 2

1

查找并编辑package.json文件。例如:

{
  "name": "build",
  "version": "0.0.1",
  "scripts": {
    "start": "node different-file.js"
  }
}
于 2018-04-09T16:38:33.063 回答
-1

目前还没有理由在 react 中运行不同的 file.js。所以你需要通过命令弹出你的反应应用程序

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);
});
于 2021-11-19T04:43:58.017 回答