npm start 如何指定 index.js 以外的启动文件

IT技术 reactjs server npm-start
2021-05-09 11:42:22

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

但那些不起作用

2个回答

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

{
  "name": "build",
  "version": "0.0.1",
  "scripts": {
    "start": "node different-file.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);
});